+2008-06-28 Matthias Klose <doko@ubuntu.com>
+
+ Import GNU Classpath (classpath-0_97_2-release).
+
+ * Regenerate class and header files.
+ * Regenerate auto* files.
+ * gcj/javaprims.h: Define jobjectRefType.
+ * jni.cc (_Jv_JNI_GetObjectRefType): New (stub only).
+ (_Jv_JNIFunctions): Initialize GetObjectRefType.
+ * gnu/classpath/jdwp/VMVirtualMachine.java,
+ java/security/VMSecureRandom.java: Merge from classpath.
+ * HACKING: Fix typo.
+ * ChangeLog-2007: New file.
+ * configure.ac: Set JAVAC, pass --disable-regen-headers to classpath.
+
2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate.
PR libgcj/34444
* java/lang/natClass.cc (Class::getEnclosingClass): Call
getDeclaringClass().
-
-2007-12-22 David Daney <ddaney@avtrex.com>
-
- * scripts/makemake.tcl (emit_bc_rule): Use $(LIBGCJ_BC_FLAGS)
- instead of -findirect-dispatch -fno-indirect-classes.
- * configure.ac (libgcj-bc): New AC_ARG_ENABLE.
- (SUPPRESS_LIBGCJ_BC): New AM_CONDITIONAL.
- * Makefile.am (LIBGCJ_BC_FLAGS): New variable.
- * Makefile.in: Regenerate.
- * include/Makefile.in: Same.
- * testsuite/Makefile.in: Same.
- * configure: Same.
- * gcj/Makefile.in: Same.
- * sources.am: Same.
-
-2007-12-17 Jakub Jelinek <jakub@redhat.com>
-
- * testsuite/Makefile.am (compile-tests): Build
- libjava.jvmti/interp/*.h with -jni rather than -cni.
- * testsuite/Makefile.in: Rebuilt.
-
-2007-12-08 Andreas Tobler <a.tobler@schweiz.org>
-
- * configure.host: Add bits for i?86-*-darwin9 and x86_64-*-darwin9.
- * configure.ac: Add darwin-signal.h to x86_64-*-darwin9 and
- i?86-*darwin9.
- * configure.in: Regenerate.
- * darwin.cc: Add definitions for Darwin specific functions for 64-bit.
- (darwin_java_register_dyld_add_image_hook): Use this specific
- functions.
- * Makefile.am (gij_LDFLAGS): Add extra_gij_ldflags for Darwin9.
- * Makefile.in: Regenerate.
- * include/Makefile.in: Likewise.
- * gcj/Makefile.in: Likewise.
- * testsuite/Makefile.in: Likewise.
- * testsuite/lib/libjava.exp (libjava_arguments): Add allow_stack_execute
- for *-*-darwin9*.
-
-2007-12-06 David Daney <ddaney@avtrex.com>
-
- * interpret.cc: Replace ffi_raw with INTERP_FFI_RAW_TYPE throughout.
- (ncode_closure, ffi_closure_fun): Define versions for
- non-FFI_NATIVE_RAW_API case.
- * include/java-interp.h (INTERP_FFI_RAW_TYPE): Define and use to
- replace ffi_raw throughout.
- * jni.cc, interpret-run.cc: Replace ffi_raw with INTERP_FFI_RAW_TYPE
- throughout.
-
-2007-12-06 Andreas Tobler <a.tobler@schweiz.org>
-
- * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation): Make
- the testsuite multilib aware for Darwin.
-
-2007-12-05 Thomas Fitzsimmons <fitzsim@redhat.com>
-
- * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h: Regenerate.
- * gnu/java/awt/peer/gtk/GtkWindowPeer.h: Likewise.
- * java/awt/Component.h: Likewise.
- * java/awt/Container.h: Likewise.
-
-2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
-
- * configure.ac: Don't run config-ml.in directly.
- (multilib_arg): New.
- * configure: Regenerated.
-
-2007-10-22 David Daney <ddaney@avtrex.com>
-
- * include/jvm.h (_Jv_SetGCFreeSpaceDivisor): Declare new function.
- * boehm.cc (_Jv_SetGCFreeSpaceDivisor): Define it.
-
-2007-10-18 David Daney <ddaney@avtrex.com>
-
- * classpath/lib/gnu/java/locale/LocaleData.class: Regenerate
- * classpath/lib/gnu/javax/sound/sampled/gstreamer: Add generated
- files.
- * gnu/javax/sound/sampled/gstreamer: Add generated files.
-
-2007-10-15 Maciej W. Rozycki <macro@linux-mips.org>
-
- * configure: Regenerate following changes to ../config/tls.m4.
-
-2007-09-17 Tom Tromey <tromey@redhat.com>
-
- * defineclass.cc (MAJOR_1_6): New define.
- (MINOR_1_6): Likewise.
- (_Jv_ClassReader::parse): Handle 1.6 bytecode.
-
-2007-09-12 David Daney <ddaney@avtrex.com>
-
- * configure.host: Enable interpreter for mips64. Enable hash
- synchronization for all mips*-*-linux* targets.
- * sysdep/mips/locks.h (compare_and_swap, compare_and_swap_release) Use
- __sync_bool_compare_and_swap instead of in-line asm.
- (release_set, read_barrier, write_barrier): Use __sync_synchronize
- instead of in-line asm.
-
-2007-09-09 Andreas Tobler <a.tobler@schweiz.org>
-
- PR libgcj/33326
- * testsuite/lib/libjava.exp (libjava_arguments): Append the test spec
- only for linux targets.
-
-2007-09-09 Andrew Haley <aph@redhat.com>
-
- * interpret-run.cc (invokevirtual_resolved): Nullcheck object on
- TOS.
-
-2007-09-06 Tom Tromey <tromey@redhat.com>
-
- * testsuite/libjava.lang/StackTrace2.jar: Rebuilt.
- * testsuite/libjava.lang/StackTrace2.java (checkLine): Print file
- name.
-
-2007-09-06 Roman Zippel <zippel@linux-m68k.org>
-
- * sysdep/m68k/locks.h: New file.
- * configure.host: Set sysdeps_dir and libgcj_interpreter for m68k.
- * configure.ac: Set SIGNAL_HANDLER for m68*-*-linux*.
- * configure: Regenerate.
-
-2007-09-05 Samuel Thibault <samuel.thibault@ens-lyon.org>
-
- * configure.host(gnu*): Set use_libgcj_bc to yes.
-
-2007-09-04 Matthias Klose <doko@ubuntu.com>
-
- * configure.ac: Do not pass --with-native-libdir to classpath.
- * configure: Regenerate.
-
-2007-09-04 Matthias Klose <doko@ubuntu.com>
-
- PR libgcj/33278
- * configure.ac: Robustify extraction of gcj version.
- * configure: Regenerate.
-
-2007-09-04 Andrew Haley <aph@redhat.com>
-
- PR java/27908
- * testsuite/libjava.lang/PR27908.java
- ({run1,run2,run3}.isRunning): New Method.
- (main): Fix race condition.
-
-2007-08-29 Andrew Haley <aph@redhat.com>
-
- * gnu/classpath/natVMStackWalker.cc (VMStackWalker::getCallingClass):
- Make sure we're not sibcalled.
- (GET_CALLING_CLASS): Define for ARM EABI.
-
-2007-08-22 Andrew Haley <aph@redhat.com>
-
- * configure.host (BACKTRACESPEC): Add arm*-linux*.
-
-2007-08-22 Andrew Haley <aph@redhat.com>
-
- * configure.ac (LIBSTDCXXSPEC): New.
- * configure.host: Add arm*-linux* to pthread test.
- * configure.ac (LIBGCJTESTSPEC): Add path to libstdc++ for ARM
- EABI.
- * testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Use
- -fexceptions for ARM EABI.
- * testsuite/lib/libjava.exp (libjava_arguments): Add libgcj-test.spec.
- (libjava_invoke): Log the invocation.
-
-2007-08-15 Andrew Haley <aph@redhat.com>
-
- * configure.ac (extra_ldflags): Define.
- * Makefile.am: Use extra_ldflags for all executables.
-
-2007-08-14 Andrew Haley <aph@redhat.com>
-
- * sysdep/arm/backtrace.h: Remove stubs for _Unwind_GetIPInfo,
- _Unwind_GetRegionStart, and _Unwind_Backtrace.
-
-2007-07-27 Andrew Haley <aph@redhat.com>
-
- * gnu/classpath/natVMStackWalker.cc (GET_CALLING_CLASS): Stub for
- ARM EABI.
- * exception.cc (get_exception_header_from_ue): New.
- (get_ttype_entry): ARM EABI version.
- (PERSONALITY_FUNCTION): Add ARM EABI code.
- * sysdep/arm/backtrace.h: New file.
- * stacktrace.cc (_URC_NORMAL_STOP): New.
- * configure.ac (extra_ldflags_libjava): Add libsupc++.la for ARM
- EABI.
- * configure.host (BACKTRACESPEC): Add arm/backtrace.h.
-
-2007-08-31 Matthias Klose <doko@ubuntu.com>
-
- * classpath/lib/java/util/EnumSet*.class: Regenerate
-
-2007-08-30 Andreas Tobler <a.tobler@schweiz.org>
-
- * gij.cc (version): Update Copyright year.
-
-2007-08-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
-
- * configure.host (gnu*): Set use_libgcj_bc to yes.
-
-2007-08-15 Tom Tromey <tromey@redhat.com>
-
- * java/lang/Class.java (internalGetFields): Use LinkedHashSet.
- * classpath/lib/java/lang/Class.class: Rebuilt.
-
-2007-08-15 Samuel Thibault <samuel.thibault@ens-lyon.org>
-
- * java/lang/natPosixProcess.cc (sigchld_handler) [!SA_SIGINFO]: Remove
- 'si' and 'third' parameters. Disable calling
- pmi->old_sigaction.sa_sigaction.
- (java::lang::PosixProcess*ProcessManager::init) [!SA_SIGINFO]: Set
- sa.sa_handler instead of sa.sa_sigaction, don't set SA_SIGINFO flag.
-
-2007-08-09 Andrew Haley <aph@redhat.com>
-
- * testsuite/lib/libjava.exp (libjava_invoke): Log the invocation.
-
-2007-08-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
-
- * java/net/natVMInetAddressPosix.cc
- (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]:
- Allocate buffer dynamically.
-
-2007-08-04 Alfred M. Szmidt <ams@gnu.org>
-
- * java/io/natFilePosix.cc (init_native) [!MAXPATHLEN]: Define to 0.
- * java/io/File.java (createTempFile): Don't truncate if the system
- doesn't have a limit on the length of a file name.
- * classpath/lib/java/io/File.class: Regenerate.
-
-2007-08-04 Matthias Klose <doko@ubuntu.com>
-
- Import GNU Classpath (libgcj-import-20070727).
-
- * Regenerate class and header files.
- * Regenerate auto* files.
-
- * include/jvm.h:
- * jni-libjvm.cc (Jv_JNI_InvokeFunctions): Rename type.
- * jni.cc (_Jv_JNIFunctions, _Jv_JNI_InvokeFunctions): Likewise.
- * jni.cc (_Jv_JNI_CallAnyMethodA, _Jv_JNI_CallAnyVoidMethodA,
- _Jv_JNI_CallMethodA, _Jv_JNI_CallVoidMethodA,
- _Jv_JNI_CallStaticMethodA, _Jv_JNI_CallStaticVoidMethodA,
- _Jv_JNI_NewObjectA, _Jv_JNI_SetPrimitiveArrayRegion): Constify
- jvalue parameter.
- * java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise.
-
- * java/lang/VMFloat.java (toString, parseFloat): New.
-
- * gnu/awt/xlib/XToolkit.java (setAlwaysOnTop, isModalityTypeSupported,
- isModalExclusionTypeSupported): New (stub only).
- * gnu/awt/xlib/XCanvasPeer.java (requestFocus): Likewise.
- * gnu/awt/xlib/XFramePeer.java (updateMinimumSize, updateIconImages,
- updateFocusableWindowState, setModalBlocked, getBoundsPrivate,
- setAlwaysOnTop): Likewise.
- * gnu/awt/xlib/XFontPeer.java (canDisplay): Update signature.
-
- * scripts/makemake.tcl: Ignore gnu/javax/sound/sampled/gstreamer,
- ignore javax.sound.sampled.spi.MixerProvider, ignore .in files.
-
- * HACKING: Mention --enable-gstreamer-peer, removal of generated files.
-
-2007-07-31 David Daney <ddaney@avtrex.com>
-
- * HACKING: Document regenerating configure and aclocal.m4.
-
-2007-07-31 David Daney <ddaney@avtrex.com>
-
- * configure.ac (INTERPRETER): New AM_CONDITIONAL.
- * scripts/makemake.tcl (package_map): Mark jdwp and jvmti packages
- as being for interpreter only. Place interpreter related files in
- 'if INTERPRETER' block.
- (interpreter_package_files): New list.
- (interpreter_header_vars): Ditto.
- (emit_package_rule_to_list): Renamed from emit_package_rule with
- new target list parameter.
- (emit_package_rule): Rewritten to call emit_package_rule_to_list.
- (emit_interpreter_rule): New function.
- (emit_source_var): Place interpreter related files in
- interpreter_header_vars.
- * Makefile.am (ACLOCAL_AMFLAGS): Add -I libltdl.
- (libgcj_interpret_source_files): New variable.
- (libgcj_la_SOURCES): Move jvmti.cc and interpret.cc to
- libgcj_interpret_source_files and include
- libgcj_interpret_source_files.
- (nat_jdwp_source_files): New variable.
- (nat_jvmti_source_files): Ditto.
- (nat_source_files): Move jdwp and jvmti related files to
- nat_jdwp_source_files and nat_jvmti_source_files and include
- nat_jdwp_source_files and nat_jvmti_source_files.
- * Makefile.in: Regenerate.
- * include/Makefile.in: Ditto.
- * testsuite/Makefile.in: Ditto.
- * gcj/Makefile.in: Ditto.
- * sources.am: Ditto.
- * configure: Ditto.
- * include/config.h.in: Ditto.
- * interpret.cc: Remove #ifdef INTERPRETER block.
- * stacktrace.cc (UnwindTraceFn): Do not handle proxy frames if
- interpreter disabled.
- * include/java-interp.h (_Jv_FrameType): Move outside of
- #ifdef INTERPRETER block.
- * include/execution.h (_Jv_IndirectCompiledEngine::do_get_closure_list,
- _Jv_InterpreterEngine, _Jv_soleInterpreterEngine): Place in
- #ifdef INTERPRETER block.
- * jni.cc (jvmti.h, jvmti-int.h): Only include if INTERPRETER is
- defined.
- (_Jv_JNI_PopSystemFrame, _Jv_JNI_GetEnv): Only do jvmti processing
- if INTERPRETER is defined.
- * prims.cc (jvmti.h, jvmti-int.h, Jdwp.h, VMVirtualMachine.h): Only
- include if INTERPRETER is defined.
- (defaultJdwpOptions, jdwpOptions, jvmti_agent_onload_func,
- jvmti_agent_onunload_func, jvmti_agentonload, jvmti_agentonunload,
- jvmti_agent_opts, load_jvmti_agent): Only define if INTERPRETER is
- defined.
- (parse_x_arg): Only process 'runjdwp:' if INTERPRETER is defined.
- (parse_init_args): Only process jvmti related options if
- INTERPRETER is defined.
- (_Jv_CreateJavaVM): Only call _Jv_JVMTI_Init if INTERPRETER is
- defined.
- (_Jv_RunMain): Only do jvmti and jdwp processing if INTERPRETER is
- defined.
- * link.cc (jvmti.h, jvmti-int.h): Only include if INTERPRETER is
- defined.
- (_Jv_ThrowNoClassDefFoundError, _Jv_Linker::create_error_method):
- Define if if INTERPRETER is not defined.
- (_Jv_Linker::wait_for_state): Only do jvmti proccessing if
- INTERPRETER is defined.
- * boehm.cc (closure_list_pointer, finalize_closure_list,
- _Jv_ClosureListFinalizer): Only define if INTERPRETER is
- defined.
- * java/lang/natThread.cc (jvmti.h, jvmti-int.h): Only include if
- INTERPRETER is defined.
- (finish_, _Jv_NotifyThreadStart): Only do jvmti proccessing if
- INTERPRETER is defined.
- * java/lang/Class.h (_Jv_InterpreterEngine): Move declaration
- and friend declaration inside #ifdef INTERPRETER block.
- * java/lang/natClass.cc (_Jv_ClosureList::releaseClosures,
- _Jv_ClosureList::registerClosure, _Jv_GetInterpClassSourceFile):
- Only define if INTERPRETER is defined.
- * java/lang/reflect/natVMProxy.cc (UnsupportedOperationException.h):
- Include.
- (generateProxyClass): Throw UnsupportedOperationException unless
- INTERPRETER is defined.
-
-2007-07-29 Matthias Klose <doko@ubuntu.com>
-
- * HACKING: Document regenerating configure.
-
-2007-07-29 H.J. Lu <hongjiu.lu@intel.com>
-
- PR libgcj/32929
- * aclocal.m4: Regenerated.
- * configure: Likewise.
-
-2007-07-28 Matthias Klose <doko@ubuntu.com>
-
- * configure.ac: Encode the libgcj soversion in dbexecdir,
- pass --with-native-libdir to classpath configure.
- * configure: Regenerate.
-
-2007-07-28 Matthias Klose <doko@ubuntu.com>
-
- * classpath/jvmti.h: Remove.
-
-2007-07-27 Tom Tromey <tromey@redhat.com>
-
- * Rebuild .class files with new ecj.
-
-2007-07-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * configure.ac (mips-sgi-irix6*): Override SYSTEMSPEC.
- * configure: Regenerate.
-
-2007-07-16 Rask Ingemann Lambertsen <rask@sygehus.dk>
-
- PR target/32340
- * configure.host (arm*-elf | strongarm*-elf | xscale*-elf): Use the
- new sysdeps/arm directory.
-
-2007-07-15 Tom Tromey <tromey@redhat.com>
-
- * java/io/File.java: Implement Comparable<File>.
- (compareTo): Removed.
- * java/io/File.h: Rebuilt.
- * classpath/lib/java/io/File.class: Rebuilt.
-
-2007-07-14 Tom Tromey <tromey@redhat.com>
-
- * Rebuilt .class files.
-
-2007-07-15 Andrew Haley <aph@redhat.com>
-
- * configure.host:
- arm*-linux-gnu -> arm*-linux*.
-
-2007-07-14 Krister Walfridsson <cato@df.lth.se>
-
- * gnu/gcj/util/natGCInfo.cc: Use HAVE_STRERROR_R.
- * configure.ac: Remove check for strerror, add check for strerror_r.
- * configure: Regenerate.
- * include/config.h.in: Regenerate.
-
-2007-07-13 Andrew Haley <aph@redhat.com>
-
- * libgcj.ver: Add __gcj_personality_sj0.
-
- * testsuite/libjava.jvmti/jvmti-interp.exp: Likewise.
- * testsuite/libjava.jni/jni.exp: Use -fdollars-in-identifiers.
- * testsuite/libjava.jni/cni.exp: Use -fdollars-in-identifiers.
- * testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_compile_cxx_to_o): Likewise.
-
- * gnu/classpath/natVMStackWalker.cc (getCallingClassLoader): Check
- klass is non-null.
- * java/lang/reflect/natField.cc (getAddr): Call
- _Jv_StackTrace::GetCallingClass only if CALLER is non-null.
- * java/lang/reflect/natVMProxy.cc (run_proxy): Use
- _Jv_getFieldInternal to get field proxyClass.m.
- (_Jv_getFieldInternal): New function.
-
-2007-07-11 Andrew Haley <aph@redhat.com>
-
- * configure.host (arm*-linux-gnu): New.
- * sysdep/arm/locks.h: New.
-
-2007-07-13 Roger Sayle <roger@eyesopen.com>
-
- * java/lang/natPosixProcess.cc: Include <sys/time.h> before
- <sys/resource.h> to restore bootstrap on powerpc-apple-darwin7.9.0.
-
-2007-07-12 Matthias Klose <doko@ubuntu.com>
-
- * gnu/classpath/jdwp/util/MethodResult.h,
- gnu/classpath/jdwp/value/ObjectValue.h: Regenerate.
-
-2007-07-11 Keith Seitz <keiths@redhat.com>
-
- * interpret.cc (get_local_var_table) [DIRECT_THREADED]: Make sure the
- method is compiled.
- * testsuite/libjava.jvmti/interp/getlocalvartable.out: Revise
- for compiled methods.
-
-2007-07-10 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- PR libgcj/32651
- * configure.host (mips-sgi-irix6*): Set sysdeps_dir.
- Disable interpreter.
-
-2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
-
- * java/lang/natPosixProcess.cc: Reorder includes to fix compilation
- on hppa2.0w-hp-hpux11.11.
- Remove include of <gcj/cni.h>.
-
-2007-07-05 H.J. Lu <hongjiu.lu@intel.com>
-
- * aclocal.m4: Regenerated.
-
-2007-07-03 Andreas Tobler <a.tobler@schweiz.org>
-
- * java/lang/Class.h: Remove redundant 'class java::*::* declarations.
-
-2007-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- PR libgcj/30513
- * configure.host (i[3-6]86-*): Undef sun.
-
-2007-06-28 H.J. Lu <hongjiu.lu@intel.com>
-
- * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one):
- Fix a typo.
-
-2007-06-28 Jan Nijtmans <nijtmans@users.sourceforge.net>
-
- PR libgcj/30999:
- * jni_md.h: Add the possibility to compile jni code with.
- -fvisibility=hidden. This causes all symbols to be hidden
- except the JNI functions which need to be exported.
-
-2007-06-28 Andreas Tobler <a.tobler@schweiz.org>
-
- * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one): Pass
- the cxxldlibflags to exec_gij to have the right libstdc++ invoked.
-
-2007-07-21 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/VMVirtualMachine.h: Regenerate.
-
-2007-07-20 Keith Seitz <keiths@redhat.com>
-
- * classpath/lib/gnu/classpath/jdwp/value/StringValue.class:
- Regenerate.
-
-2007-07-20 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/VMVirtualMachine.java (executeMethod):
- Update from reference implementation.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (executeMethod):
- Update parameter list to match new VMVirtualMachine interface.
- * classpath/lib/gnu/classpath/jdwp/processor/ClassTypeCommandSet.class:
- Regenerate.
- * classpath/lib/gnu/classpath/jdwp/processor/
- ObjectReferenceCommandSet.class: Regenerate.
- * classpath/lib/gnu/classpath/jdwp/value/ObjectValue.class: Regenerate.
- * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class: Regenerate.
- * classpath/lib/gnu/classpath/jdwp/util/MethodResult.class: Regenerate.
-
-2007-06-18 Keith Seitz <keiths@redhat.com>
-
- * gnu/gcj/jvmti/Breakpoint.java: Make abstract.
- (method): Change from private to protected.
- (location): Likewise.
- (Breakpoint): Change argument list to take only integer type.
- Add default constructor.
- (initialize_native): Renamed to ...
- (_save_insn): ... this to make function more explicit.
- (execute): New method.
- * gnu/gcj/jvmti/Breakpoint.h: Regenerate.
- * gnu/gcj/jvmti/natBreakpoint.cc (initialize_native): Rename to...
- (_save_insn): ... this.
- (install): Save the original instruction.
- * gnu/gcj/jvmti/NormalBreakpoint.java: New file.
- * gnu/gcj/jvmti/NormalBreakpoint.h: New file.
- * gnu/gcj/jvmti/natNormalBreakpoint.cc: New file.
- * gnu/gcj/jvmti/BreakpointManager.java (newBreakpoint):
- Instantiate a NormalBreakpoint instead of Breakpoint.
- * interpret-run.cc (insn_breakpoint): Remove breakpoint actions
- and call Breakpoint.execute to do them.
- * classpath/lib/gnu/gcj/jvmti/Breakpoint.class: Regenerate.
- * classpath/lib/gnu/gcj/jvmti/BreakpointManager.class: Likewise.
- * classpath/lib/gnu/gcj/jvmti/NormalBreakpoint.class: New file.
- * sources.am: Regenerate.
- * Makefile.am (nat_source_files): Add natNormalBreakpoint.cc.
- * Makefile.in: Regenerated.
-
-2007-06-14 Keith Seitz <keiths@redhat.com>
-
- * include/java-interp.h (_Jv_LocalVarTableEntry): Add union
- for bytecode_pc and direct-threaded pc.
- Add field descriptions inline.
- * defineclass.cc (read_one_code_attribute): Change from
- bytecode_start_pc to bytecode_pc.
- Remove unused variable "len".
- * interpret.cc (compile): Remap the variable table, too.
- (get_local_var_table) [DIRECT_THREADED]: Use insn_index on the
- start location to map from pc_t to code index.
-
-2007-06-09 Keith Seitz <keiths@redhat.com>
-
- * testsuite/libjava.jvmti/dummyagent.c (Agent_OnLoad):
- Add missing return value.
-
-2007-06-03 Matthias Klose <doko@ubuntu.com>
-
- * java/io/natFileWin32.cc (setFilePermissions): New (stub only).
- _access: Handle EXEC query, stub only.
-
-2007-06-03 Matthias Klose <doko@ubuntu.com>
-
- Merged from classpath:
- * gnu/java/nio/SelectorProviderImpl.java: Whitespace merge.
- * java/lang/System.java(inheritedChannel): New.
- * java/lang/Character.java: Remove stray`;'.
- * java/net/MulticastSocket.java: Merged.
- * java/text/DateFormatSymbols.java(getInstance): New, comment updates.
- * java/text/Collator.java(getInstance): Merged.
- * java/util/Calendar.java: New attributes ALL_STYLES, SHORT, LONG.
- getDisplayName, getDisplayNames: New.
- * java/util/logging/Logger.java: Merged.
- * Regenerate .class and .h files.
-
-2007-06-03 Matthias Klose <doko@ubuntu.com>
-
- * java/io/File.java: Merge with classpath-0.95, new method
- setFilePermissions, new attribute EXEC.
- * java/io/natFilePosix.cc (setFilePermissions): New.
- _access: Handle EXEC query.
- * classpath/lib/java/io/File.class, java/io/File.h: Regenerate.
-
-2007-06-03 Matthias Klose <doko@ubuntu.com>
-
- Imported GNU Classpath 0.95.
-
- * classpath/Makefile.in,
- classpath/native/jni/midi-dssi/Makefile.in,
- classpath/native/jni/classpath/Makefile.in,
- classpath/native/jni/Makefile.in,
- classpath/native/jni/gconf-peer/Makefile.in,
- classpath/native/jni/java-io/Makefile.in,
- classpath/native/jni/native-lib/Makefile.in,
- classpath/native/jni/java-util/Makefile.in,
- classpath/native/jni/midi-alsa/Makefile.in,
- classpath/native/jni/java-lang/Makefile.in,
- classpath/native/jni/java-nio/Makefile.in,
- classpath/native/jni/java-net/Makefile.in,
- classpath/native/jni/xmlj/Makefile.in,
- classpath/native/jni/qt-peer/Makefile.in,
- classpath/native/jni/gtk-peer/Makefile.in,
- classpath/native/Makefile.in, classpath/native/jawt/Makefile.in,
- classpath/native/fdlibm/Makefile.in,
- classpath/native/plugin/Makefile.in,
- classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
- classpath/tools/Makefile.in, classpath/doc/Makefile.in,
- classpath/doc/api/Makefile.in, classpath/lib/Makefile.in,
- classpath/external/Makefile.in, classpath/external/jsr166/Makefile.in,
- classpath/external/sax/Makefile.in,
- classpath/external/w3c_dom/Makefile.in,
- classpath/external/relaxngDatatype/Makefile.in,
- classpath/include/Makefile.in,
- classpath/examples/Makefile.in: Regenerate.
- * classpath/config.guess, classpath/config.sub,
- classpath/ltmain.sh : Update.
- * classpath/configure, classpath/depcomp, classpath/missing,
- classpath/aclocal.m4, classpath/install-sh: Regenerate.
-
- * gnu/classpath/Configuration.java (CLASSPATH_VERSION): Now 0.95.
- * sources.am: Regenerate.
- * Makefile.in: Regenerate.
-
- * Update the .class files and generated CNI header files, add new
- .class and generated CNI header files.
- * Remove generated files for removed java source files:
- classpath/gnu/java/net/BASE64.java,
- classpath/gnu/java/security/util/Base64.java,
- classpath/gnu/java/awt/peer/gtk/GThreadMutex.java,
- classpath/gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
- classpath/gnu/java/awt/font/autofit/Scaler.java,
- classpath/gnu/classpath/jdwp/util/Value.java,
- classpath/gnu/javax/net/ssl/Base64.java.
- * Remove empty directories.
-
- * Makefile.am(nat_source_files): Add natVMOperatingSystemMXBeanImpl.cc.
- * java/lang/Class.java(setAccessible): Merge from classpath.
- * java/util/Locale.java: Remove.
- * gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java,
- gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.cc: New.
- * gcj/javaprims.h: Update class declarations.
- * scripts/classes.pl: Update usage.
- * HACKING: Mention to build all peers.
-
-2007-06-02 Paolo Bonzini <bonzini@gnu.org>
-
- * configure: Regenerate.
-
-2007-05-31 Andrew Haley <aph@redhat.com>
-
- * java/lang/natClassLoader.cc (_Jv_NewClassFromInitializer): Clear
- INTERPRETED access modifier.
-
-2007-05-31 Paolo Bonzini <bonzini@gnu.org>
-
- PR libjava/32098
- * configure: Regenerated.
- * aclocal.m4: Regenerated.
-
-2007-05-30 H.J. Lu <hongjiu.lu@intel.com>
-
- PR libjava/32098
- * configure: Regenerated.
-
-2007-05-29 H.J. Lu <hongjiu.lu@intel.com>
-
- * configure.ac: Don't include ../config/confsubdir.m4.
- * aclocal.m4: Regenerated.
- * configure: Likewise.
-
-2007-05-27 Paolo Bonzini <bonzini@gnu.org>
-
- PR bootstrap/32078
- * configure.ac: Include confsubdir.m4.
- * configure: Regenerate.
-
-2007-05-24 Keith Seitz <keiths@redhat.com>
-
- * include/java-interp.h (_Jv_InterpFrame::get_pc): Only deduct
- one when pc_ptr is non-NULL.
-
- * prims.cc (parse_init_args): Enable JVMTI with agentlib
- and agentpath options.
-
- * testsuite/lib/libjava.exp (exec_gij): Add new addl_flags
- parameter.
- * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one):
- Pass '-agentlib:dummyagent' when executing gij.
- (gij_jvmti_run): Build dummy JVMTI agent before running tests,
- and remove it when finished.
- * testsuite/libjava.jvmti/dummyagent.c: New file.
-
-2007-05-23 Steve Ellcey <sje@cup.hp.com>
-
- * Makefile.in: Regenerate.
- * configure: Regenerate.
- * aclocal.m4: Regenerate.
- * gcj/Makefile.in: Regenerate.
- * include/Makefile.in: Regenerate.
- * testsuite/Makefile.in: Regenerate.
-
-2007-05-17 Kyle Galloway <kgallowa@redhat.com>
-
- * classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
- (executeMethods): Remove cast to ClassReferenceTypeId.
- * classpath/lib/gnu/classpath/jdwp/processor/
- ReferenceTypeCommandSet.class: Rebuilt.
-
-2007-05-17 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/natVMMethod.cc (getModifiers): Check for native
- classes and mark methods as native appropriately.
-
-2007-05-17 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/VMFrame.java (<init>): Add parameter for "this"
- pointer.
- * gnu/classpath/jdwp/VMFrame.h: Regenerated.
- * classpath/lib/gnu/classpath/jdwp/VMFrame.class: Rebuilt.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (getFrame): Use new
- VMFrame constructor.
-
-2007-05-16 David Daney <ddaney@avtrex.com>
-
- * include/java-stack.h (_Jv_FrameInfo): Remove union definition.
- (_Jv_StackFrame): Remove commented out code.
- (_Jv_UnwindState): Remove superfluous 'typedef'.
- * sun/misc/natUnsafe.cc (spinlock): Add white space to quiet
- compiler warnings.
- * gnu/java/lang/management/natVMMemoryPoolMXBeanImpl.cc
- (getCollectionUsage): Don't declare unused parameter n.
- (getMemoryManagerNames): Same.
- * gnu/gcj/util/natGCInfo.cc (gc_debug_info): Remove superfluous
- 'typedef'.
-
-2007-05-16 Keith Seitz <keiths@redhat.com>
-
- * include/java-interp.h (breakpoint_at): Declare.
- * interpret.cc (breakpoint_at): New function.
- * gnu/classpath/jdwp/VMVirtualMachine.java (_event_list):
- New member.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (initialize):
- Initialize _event_list.
- (handle_single_step): If there is a breakpoint at the
- location at which we are stopping, do not send the notification.
- Instead add the event to a list of events that occur at this
- location.
- (jdwpBreakpointCB): If the event list is not empty, send
- whatever events are in it and the breakpoint event in a single
- notification.
- Mark parameter jni_env as MAYBE_UNUSED.
- * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class:
- Regenerated.
- * gnu/classpath/jdwp/VMVirtualMachine.h: Regenerated.
-
-2007-05-15 David Daney <ddaney@avtrex.com>
-
- * classpath/lib/javax/swing/text/html/HTMLEditorKit.class: Regenerate
- * gnu/java/awt/peer/gtk/ComponentGraphics.h: Same.
-
-2007-05-15 Keith Seitz <keiths@redhat.com>
-
- * interpret.cc (STOREA): Rewrite using temporary variable to
- avoid double-macro expansion side-effects.
- (STOREI): Likewise.
- (STOREF): Likewise.
- (STOREL)[SIZEOF_VOID_P == 8]: Likewise.
- (STORED)[SIZEOF_VOID_P == 8]: Likewise.
- (STOREL)[SIZEOF_VOID_P != 8]: Likewise.
- (STORED)[SIZEOF_VOID_P != 8]: Likewise.
- (POKEI): Likewise.
-
-2007-05-12 David Daney <ddaney@avtrex.com>
-
- PR libgcj/29324
- * include/posix-threads.h (_Jv_BlockSigchld): Declare.
- (_Jv_UnBlockSigchld): Same.
- * posix-threads.cc: Include posix-threads.h.
- (block_sigchld) Rename to...
- (_Jv_BlockSigchld) ... this.
- (_Jv_UnBlockSigchld): New function.
- (_Jv_InitThreads): Call _Jv_BlockSigchld in place of block_sigchld.
- (_Jv_ThreadStart): Same.
- * java/lang/PosixProcess$ProcessManager.h: Regenerate.
- * java/lang/PosixProcess.java: Clean up imports.
- (ProcessManager): Make final.
- (ProcessManager.queue): Genericise and make private.
- (ProcessManager.pidToProcess): Remove.
- (ProcessManager.liveProcesses): New field.
- (ProcessManager.reaperPID): Remove.
- (ProcessManager.nativeData): New field.
- (ProcessManager.removeProcessFromMap): Remove.
- (ProcessManager.addProcessToMap):Remove.
- (ProcessManager.addToLiveProcesses): New method.
- (ProcessManager.run): Rewritten.
- (ProcessManager.reap): Change method signature,
- (getErrorStream): Correct formatting.
- (getInputStream): Same.
- (spawn): Add process to liveProcesses list.
- (pid): Make package private.
- * java/lang/PosixProcess.h: Regenerate.
- * java/lang/natPosixProcess.cc: Include posix.h and posix-threads.h.
- Add useing namespace java::lang.
- (ProcessManagerInternal): New struct.
- (sigchld_handler): Rewritten.
- (init): Rewritten.
- (waitForSignal): Same.
- (reap): Same.
- (signalReaper): Same.
- (nativeDestroy): Call kill as ::kill.
- (nativeSpawn): Correct formatting.
- * classpath/lib/java/lang/PosixProcess$EOFInputStream.class: Regenerate.
- * classpath/lib/java/lang/PosixProcess.class: Same.
- * classpath/lib/java/lang/PosixProcess$ProcessManager.class: Same.
-
-2007-05-07 Ian Lance Taylor <iant@google.com>
-
- PR java/31842
- * java/lang/natString.cc (_Jv_FormatInt): Avoid undefined signed
- overflow.
-
-2007-05-07 Keith Seitz <keiths@redhat.com>
-
- * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerate.
- * classpath/lib/gnu/classpath/jdwp/Jdwp$1.class: Regenerate.
- * classpath/lib/gnu/classpath/jdwp/event/Event.class:
- Regenerate.
- * classpath/lib/gnu/classpath/jdwp/transport/JdwpConnection.class:
- Regenerate.
- * gnu/classpath/jdwp/Jdwp.h: Regenerate.
- * gnu/classpath/jdwp/event/Event.h: Regenerate.
- * gnu/classpath/jdwp/transport/JdwpConnection.h: Regenerate.
-
-2007-05-04 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (getClassMethod): Change
- to use JVMTI.
-
-2007-05-03 Keith Seitz <keiths@redhat.com>
-
- * interpret.cc: Don't include ExceptionEvent.h.
- * gnu/gcj/jvmti/natExceptionEvent.cc: Remove.
- * Makefile.am (nat_source_files): Remove natExceptionEvent.cc.
- * Makefile.in: Regenerated.
-
-2007-05-03 Keith Seitz <keiths@redhat.com>
-
- * include/jvmti-int.h (_Jv_ReportJVMTIExceptionThrow):
- Declare.
- * interpret.cc (_Jv_ReportJVMTIExceptionThrow): New function.
- (find_catch_location): New function.
- (REPORT_EXCEPTION): New macro.
- (throw_internal_error): Use REPORT_EXCEPTION.
- (throw_incompatible_class_change_error): Likewise.
- (throw_null_pointer_exception): Likewise.
- (throw_class_format_error): Likewise.
- * interpret-run.cc (INTERP_REPORT_EXCEPTION)[DEBUG]: Set
- to REPORT_EXCEPTION.
- (INTERP_REPORT_EXCEPTION)[!DEBUG]: Make nop.
- (insn_new): Use INTERP_REPORT_EXCEPTION.
- (insn_athrow): Likewise.
- Remove previous JVMTI exception notifications.
- Add JVMTI ExceptionCatch notificatin.
- * jni.cc (_Jv_PopSystemFrame): Notify JVMTI clients of
- exception throw.
- * gnu/gcj/jvmti/ExceptionEvent.java: Removed.
- * gnu/gcj/jvmti/ExceptionEvent.h: Removed.
- * classpath/lib/gnu/gcj/jvmti/ExceptionEvent.class: Removed.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (jdwpExceptionCB): New function.
- (jdwpVMInitCB): Set Exception event handler and enable.
- * sources.am: Regenerated.
- * Makefile.in: Regenerated.
-
-2007-05-03 Thomas Fitzsimmons <fitzsim@redhat.com>
-
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=237304
- * Makefile.in: Regenerate.
- * scripts/makemake.tcl (scan_directory): Treat default.css as a
- property file.
- * classpath/javax/swing/text/html/default.css: Move to...
- * classpath/resource/javax/swing/text/html/default.css: New file.
- * classpath/javax/swing/text/html/HTMLEditorKit.java
- (getStyleSheet): Throw RuntimeException when style loading fails.
- * sources.am (property_files): Add
- classpath/resource/javax/swing/text/html/default.css.
-
-2007-05-02 Tom Tromey <tromey@redhat.com>
-
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=238755
- * java/lang/natCharacter.cc (Character::getType): Handle negative
- code points.
- (Character::toLowerCase): Likewise.
- (Character::toUpperCase): Likewise.
- (Character::digit): Likewise.
- (Character::getNumericValue): Likewise.
- (Character::getDirectionality): Likewise.
- (Character::toTitleCase): Likewise.
-
-2007-04-30 Keith Seitz <keiths@redhat.com>
-
- * interpret-run.cc (NEXT_INSN)[DEBUG]: Advance PC before
- executing the instruction.
- * include/java-interp.h (_Jv_InterpFrame::get_pc): Subtract
- one insn from the frame's PC. _Jv_InterpMethod::run et al
- will advance the PC before executing the instruction.
-
-2007-04-27 Keith Seitz <keiths@redhat.com>
-
- * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated.
- * classpath/lib/gnu/classpath/jdwp/event/EventManager.class:
- Regenerated.
- * gnu/classpath/jdwp/event/EventManager.h: Regenerated.
-
-2007-04-27 Keith Seitz <keiths@redhat.com>
-
- * classpath/lib/gnu/classpath/jdwp/event/filters/
- LocationOnlyFilter.class: Regenerated;
- * classpath/lib/gnu/classpath/jdwp/util/Location.class:
- Regenerated.
- * gnu/classpath/jdwp/VMMethod.java
- * classpath/lib/gnu/classpath/jdwp/VMMethod.class:
- Regenerated.
- * gnu/classpath/jdwp/VMMethod.h: Regenerated.
- * gnu/classpath/jdwp/util/Location.h: Regenerated.
-
-2007-04-27 Thomas Fitzsimmons <fitzsim@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoGraphics2D.h: Regenerate.
- * gnu/java/awt/peer/gtk/ComponentGraphics.h: Regenerate.
-
-2007-04-25 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/VMIdManager.java (getObjectId): Deal with null
- objects.
- (get): Deal with ObjectId of 0.
-
-2007-04-24 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-
- PR libgcj/31084
- * java/lang/natVMProcess.cc: Include platform.h before jvm.h.
-
-2007-04-24 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.java
- (getThreadStatus): Implement.
-
-2007-04-24 Keith Seitz <keiths@redhat.com>
-
- * headers.txt (gnu/gcj/jvmti/Breakpoint.h)[DIRECT_THREADED]:
- Add _Jv_RewriteBreakpointInsn friend declaration.
- * gnu/gcj/jvmti/natBreakpoint.cc (_Jv_RewriteBreakpointInsn)
- [DIRECT_THREADED]: New function.
- * gnu/gcj/jvmti/Breakpoint.h: Regenerate.
- * interpret-run.cc: Define new REWRITE_INSN macro.
- Changed all occurrences of insn rewriting to call REWRITE_INSN.
-
-2007-04-23 Keith Seitz <keiths@redhat.com>
-
- * include/no-gc.h (_Jv_IsThreadSuspended): Declare.
- * include/boehm-gc.h (_Jv_IsThreadSuspended): Likewise.
- * boehm.cc (_Jv_IsThreadSuspended): New function.
- * nogc.cc (_Jv_IsThreadSuspended): Likewise.
- * jvmti.cc (_Jv_JVMTI_GetThreadState): New function.
- (_Jv_JVMTI_Interface): Define GetThreadState.
-
-2007-04-23 Kyle Galloway <kgallowa@redhat.com>
-
- * include/java-interp.h (_Jv_InterpFrame): Add pointer to the
- interpreter PC.
- (<init>): Add a pointer to the interpreter PC as a parameter with
- default value NULL.
- (get_pc): New method.
- * interpret-run.cc: If debugging, pass a pointer to the PC when
- creating the stack frame.
- * jvmti.cc (_Jv_JVMTI_GetStackTrace): Call _Jv_InterpFrame::get_pc
- to get the PC.
-
-2007-04-23 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (getSourceFile): Check
- for null source file and throw an exception indicating this.
-
-2007-04-20 Keith Seitz <keiths@redhat.com>
-
- * gnu/gcj/jvmti/BreakpointManager.java (newBreakpoint):
- Install the new breakpoint into the bytecode.
- (deleteBreakpoint): Remove the breakpoint from the bytecode.
- * classpath/lib/gnu/gcj/jvmti/BreakpointManager.class:
- Regenerate.
- * gnu/gcj/jvmti/natBreakpoint.cc (initialize_native):
- Don't install the breakpoint here.
-
-2007-04-19 Keith Seitz <keiths@redhat.com>
-
- * interpret-run.cc [insn_breakpoint]: Save the original
- insn for the breakpoint before posting the JVMTI notification.
-
-2007-04-19 Tom Tromey <tromey@redhat.com>
-
- * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.h: Rebuilt.
-
-2007-04-18 Tom Tromey <tromey@redhat.com>
-
- * Regenerated headers with new gjavah.
-
-2007-04-18 Andrew Haley <aph@redhat.com>
-
- * java/lang/reflect/natVMProxy.cc (ncode_closure): Add
- method_index.
- (generateProxyClass): Add field $Proxy0.m. Store methods array in
- it.
- (run_proxy): Retrieve the method to invoke from in $Proxy0.m.
- * java/lang/Class.h: Remove _Jv_LookupProxyMethod.
- * java/lang/natClass.cc: Likewise.
- * headers.txt: Likewise.
- * java/lang/reflect/Method.h: Likewise.
-
-2007-04-16 Andrew Haley <aph@redhat.com>
-
- * gnu/gcj/runtime/BootClassLoader.java (getBootURLLoader): New
- method.
- (bootGetResource): Use getBootURLLoader() to load resources.
- (bootGetResources): Likewise.
-
- * java/lang/reflect/natMethod.cc (Method::invoke): In invoke also
- check that the method's declaring class is accessible.
-
-2007-04-10 Keith Seitz <keiths@redhat.com>
-
- * sources.am: Regenerate.
- * Makefile.in: Likewise.
-
-2007-04-09 Kyle Galloway <kgallowa@redhat.com>
-
- * interpret-run.cc: If debugging, check if args is NULL before
- getting the "this" pointer.
-
-2007-04-09 Kyle Galloway <kgallowa@redhat.com>
-
- * classpath/gnu/classpath/jdwp/value/ArrayValue.java: New file.
- * classpath/lib/gnu/classpath/jdwp/value/ArrayValue.class: New file.
- * gnu/classpath/jdwp/ArrayValue.h: New file.
- * gnu/classpath/jdwp/natVMFrame.cc (getValue): Add array case.
- (setValue): Ditto.
-
-2007-04-09 David Daney <ddaney@avtrex.com>
-
- PR libgcj/23758
- * java/lang/natPosixProcess.cc (nativeSpawn): Move building of
- environment before the fork.
- * testsuite/libjava.lang/Process_7.java: New test.
- * testsuite/libjava.lang/Process_7.out: Its expected results.
- * testsuite/libjava.lang/Process_7.jar: Generated file.
-
-2007-04-09 H.J. Lu <hongjiu.lu@intel.com>
-
- * prims.cc (load_jvmti_agent): Add the missing `,'.
-
-2007-04-09 Kyle Galloway <kgallowa@redhat.com>
-
- * gij.cc (main): Accept -agentlib and -agentpath options.
- * prims.cc (parse_init_args): Deal with -agentlib and -agentpath.
- (load_jvmti_agent): New function.
-
-2007-04-04 Tania Bento <tbento@redhat.com>
-
- * java/text/DecimalFormatSymbols.java: Added the year 2007 to
- Copyright information and introduced new variable, currency.
- (DecimalFormatSymbols(Locale)): Define currency and intlCurrencySymbol
- to "XXX", currencySymbol to "?" and localCurrency appropriately.
- (getCurrency): Fixed documentation and return the value of currency.
- (setCurrency): Fixed documentation and update the value of currency.
- (setInternationalCurrencySymbol): Fixed documentation and update the
- value of currency.
- * java/util/Currency.java: Introduced two new variables, properties
- and fractionDigits. In the static block, a properties object is
- created and the currency resource is loaded.
- (Currency(Locale)): fractionDigits is defined.
- (Currency(String)): New method.
- (getDefaultFractionDigits): Return the value of fractionDigits.
- (getInstance(String)): Check if String is equal to "XXX".
-
-2007-04-04 Kyle Galloway <kgallowa@redhat.com>
-
- * classpath/gnu/classpath/jdwp/util/VariableTable.java: Change longs
- to ints for argCnt and slots.
- (write): Replace writeLong with writeInt for the above.
-
-2007-04-03 Andrew Haley <aph@redhat.com>
-
- * testsuite/libjava.lang/ProxyTest.java: New test.
-
-2007-04-02 Tom Tromey <tromey@redhat.com>
-
- http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=205157
- * gnu/java/nio/channels/natFileChannelPosix.cc (mapImpl): Extend
- file, when writing, if it is too short.
-
-2007-04-02 Tom Tromey <tromey@redhat.com>
-
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233406
- * gnu/java/net/natPlainSocketImplPosix.cc (create): Return if
- already created.
- * gnu/java/net/PlainSocketImpl.java (getLocalAddress): Handle case
- where localport is -1.
- (create): Now public.
- * gnu/java/nio/SocketChannelImpl.java (SocketChannelImpl): Call
- 'create' on the socket.
-
-2007-04-02 Andrew Haley <aph@redhat.com>
-
- * java/lang/reflect/natVMProxy.cc (run_proxy): Use
- _Jv_LookupProxyMethod to find the Method.
- If parameter_types->length == 0, pass a null paramameter list,
- not a zero-length parameter list.
- * java/lang/natClass.cc (_Jv_LookupProxyMethod): New function.
- * java/lang/Class.h (_Jv_LookupProxyMethod): Declare.
-
-2007-04-02 Kyle Galloway <kgallowa@redhat.com>
-
- * interpret-run.cc: Add code to properly set up variable slots
- when debugging.
- * gnu/classpath/jdwp/natVMFrame.cc (checkJVMTIError): New function.
- (getObjectJVMTI): New function.
- (setObjectJVMTI): New function.
- (getIntJVMTI): New function.
- (setIntJVMTI): New function.
- (getLongJVMTI): New function.
- (setLongJVMTI): New function.
- (getFloatJVMTI): New function.
- (setFloatJVMTI): New function.
- (getDoubleJVMTI): New function.
- (setDoubleJVMTI): New function.
- (getFrameDepth): New function.
- (getValue): Implement.
- (setValue): Implement.
-
-2007-04-02 Kyle Galloway <kgallowa@redhat.com>
-
- * classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java
- (executeResume): Call VMVirtualMachine.resumeThread.
-
-2007-03-29 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/29869:
- * java/util/logging/LogManager.java (readConfiguration): Handle
- comma-separated 'handlers'. Don't try to add a non-existing
- handler.
-
-2007-03-27 Tom Tromey <tromey@redhat.com>
-
- * sources.am, Makefile.in: Rebuilt.
- * scripts/mime.types: Removed.
- * scripts/MakeDefaultMimeTypes.java: Removed.
- * gnu/gcj/io/MimeTypes.java: Removed.
- * gnu/gcj/io/MimeTypes.h: Removed.
- * gnu/gcj/io/DefaultMimeTypes.java: Removed.
- * gnu/gcj/io/DefaultMimeTypes.h: Removed.
-
-2007-03-27 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/VMFrame.java: Update from upstream
- classpath.
- * gnu/classpath/jdwp/natVMFrame.cc: Likewise.
- * gnu/classpath/jdwp/VMVirtualMachine.java: Likewise.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc: Likewise.
- (initialize): Fix compiler type-punning warning.
- (getAllLoadedClasses): Return empty list instead of NULL.
- (getLoadRequests): Likewise.
- * gnu/classpath/jdwp/exception/InvalidTagException.h: New file.
- * gnu/classpath/jdwp/exception/InvalidSlotException.h: New file.
- * gnu/classpath/jdwp/exception/TypeMismatchException.h: New file.
- * gnu/classpath/jdwp/VMVirtualMachine.h: Rebuilt.
- * gnu/classpath/jdwp/value/CharValue.h: New file.
- * gnu/classpath/jdwp/value/LongValue.h: New file.
- * gnu/classpath/jdwp/value/ShortValue.h: New file.
- * gnu/classpath/jdwp/value/Value.h: New file.
- * gnu/classpath/jdwp/value/BooleanValue.h: New file.
- * gnu/classpath/jdwp/value/VoidValue.h: New file.
- * gnu/classpath/jdwp/value/ByteValue.h: New file.
- * gnu/classpath/jdwp/value/FloatValue.h: New file.
- * gnu/classpath/jdwp/value/ObjectValue.h: New file.
- * gnu/classpath/jdwp/value/StringValue.h: New file.
- * gnu/classpath/jdwp/value/ValueFactory.h: New file.
- * gnu/classpath/jdwp/value/IntValue.h: New file.
- * gnu/classpath/jdwp/value/DoubleValue.h: New file.
- * gnu/classpath/jdwp/VMFrame.h: Rebuilt.
- * gnu/classpath/jdwp/id/NullObjectId.h: New file.
- * gnu/classpath/jdwp/util/MethodResult.h: Rebuilt.
- * gnu/classpath/jdwp/util/NullObject.h: New file.
- * gnu/classpath/jdwp/util/MonitorInfo.h: New file.
- * Makefile.in: Rebuilt.
- * sources.am: Rebuilt.
-
-2006-03-26 David Daney <ddaney@avtrex.com>
-
- * configure.ac: Remove checks for mktime, alloca, ioctl, gmtime_r,
- fork, execvp, execinfo.h, pthread_mutexattr_settype,
- pthread_mutexattr_setkind_np and sys/wait.h.
- * Makefile.in: Regenerate.
- * include/Makefile.in: Regenerate.
- * include/config.h.in: Regenerate.
- * testsuite/Makefile.in: Regenerate.
- * configure: Regenerate.
- * gcj/Makefile.in: Regenerate.
-
-2007-03-23 Gary Benson <gbenson@redhat.com>
-
- * link.cc (_Jv_Linker::resolve_method_entry):
- Ensure that the argument types and the return type of the
- found method match those expected by the calling method.
-
-2007-03-22 David Daney <ddaney@avtrex.com>
-
- PR libgcj/31228
- * configure.ac: Add checks for getrlimit and sys/resource.h.
- * include/posix.h (_Jv_platform_close_on_exec): Remove.
- * include/config.h.in: Regenerate.
- * configure: Regenerate.
- * gnu/java/nio/channels/natFileChannelPosix.cc (open): Remove call to
- _Jv_platform_close_on_exec;
- * gnu/java/net/natPlainSocketImplPosix.cc (create): Likewise.
- (accept): Likewise.
- * gnu/java/net/natPlainDatagramSocketImplPosix.cc (create):Likewise.
- * java/lang/natPosixProcess.cc: Include sys/resource.h.
- (nativeSpawn): Close all file descriptors. Don't set FD_CLOEXEC on
- pipes.
-
-2007-03-20 Andrew Haley <aph@redhat.com>
-
- * testsuite/libjava.lang/PR31264.java: New test.
-
-2007-03-14 Jakub Jelinek <jakub@redhat.com>
-
- * Makefile.am (AM_MAKEFLAGS): Pass through mandir.
- * Makefile.in: Rebuilt.
-
-2007-03-13 Keith Seitz <keiths@redhat.com>
-
- * include/java-interp.h (_Jv_InterpClass): Declare
- friend function _Jv_GetInterpClassSourceFile.
- * java/lang/Class.h (Class): Likewise.
- * java/lang/natClass.cc (_Jv_GetInterpClassSourceFile):
- New function.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (getSourceFile): Implement.
-
-2007-03-13 Thomas Fitzsimmons <fitzsim@redhat.com>
-
- * Makefile.am (AM_CXXFLAGS): Define ECJ_JAR_FILE.
- * classpath/configure.ac: Add --with-ecj-jar configure option.
- * classpath/gnu/classpath/Configuration.java.in (ECJ_JAR): New
- field.
- * classpath/INSTALL: Document --with-ecj-jar configure option and
- ecj jar requirement for com.sun.tools.javac support.
- * classpath/tools/Makefile.am: Build decendents of com and sun
- directories.
- * configure.ac: Substitute ECJ_JAR in stub Configuration.java.
- * gnu/classpath/Configuration.java,
- gnu/classpath/natConfiguration.cc (ecj): New method.
- (ECJ_JAR): New field.
- * scripts/makemake.tcl (scan_packages): Add com directory.
- * sources.am (property_files): Add
- classpath/resource/sun/rmi/rmic/messages.properties and
- classpath/resource/com/sun/tools/javac/messages.properties.
- * classpath/resource/com, classpath/resource/com/sun,
- classpath/resource/com/sun/tools,
- classpath/resource/com/sun/tools/javac, classpath/resource/sun,
- classpath/resource/sun/rmi, classpath/resource/sun/rmi/rmic,
- classpath/tools/classes/com, classpath/tools/classes/com/sun,
- classpath/tools/classes/com/sun/javadoc,
- classpath/tools/classes/com/sun/tools,
- classpath/tools/classes/com/sun/tools/doclets,
- classpath/tools/classes/sun, classpath/tools/classes/sun/rmi,
- classpath/tools/classes/sun/rmi/rmic, classpath/tools/com,
- classpath/tools/com/sun, classpath/tools/com/sun/javadoc,
- classpath/tools/com/sun/tools,
- classpath/tools/com/sun/tools/doclets,
- classpath/tools/com/sun/tools/javac, classpath/tools/sun,
- classpath/tools/sun/rmi, classpath/tools/sun/rmi/rmic: New
- directories.
- * classpath/resource/com/sun/tools/javac/messages.properties,
- classpath/resource/sun/rmi/rmic/messages.properties,
- classpath/tools/classes/com/sun/javadoc/ClassDoc.class,
- classpath/tools/classes/com/sun/javadoc/ConstructorDoc.class,
- classpath/tools/classes/com/sun/javadoc/Doc.class,
- classpath/tools/classes/com/sun/javadoc/DocErrorReporter.class,
- classpath/tools/classes/com/sun/javadoc/Doclet.class,
- classpath/tools/classes/com/sun/javadoc/ExecutableMemberDoc.class,
- classpath/tools/classes/com/sun/javadoc/FieldDoc.class,
- classpath/tools/classes/com/sun/javadoc/MemberDoc.class,
- classpath/tools/classes/com/sun/javadoc/MethodDoc.class,
- classpath/tools/classes/com/sun/javadoc/PackageDoc.class,
- classpath/tools/classes/com/sun/javadoc/ParamTag.class,
- classpath/tools/classes/com/sun/javadoc/Parameter.class,
- classpath/tools/classes/com/sun/javadoc/ProgramElementDoc.class,
- classpath/tools/classes/com/sun/javadoc/RootDoc.class,
- classpath/tools/classes/com/sun/javadoc/SeeTag.class,
- classpath/tools/classes/com/sun/javadoc/SerialFieldTag.class,
- classpath/tools/classes/com/sun/javadoc/SourcePosition.class,
- classpath/tools/classes/com/sun/javadoc/Tag.class,
- classpath/tools/classes/com/sun/javadoc/ThrowsTag.class,
- classpath/tools/classes/com/sun/javadoc/Type.class,
- classpath/tools/classes/com/sun/javadoc/TypeVariable.class,
- classpath/tools/classes/com/sun/tools/doclets/Taglet.class,
- classpath/tools/classes/sun/rmi/rmic/Main.class,
- classpath/tools/classes/sun/rmi/rmic/Messages.class,
- classpath/tools/com/sun/javadoc/ClassDoc.java,
- classpath/tools/com/sun/javadoc/ConstructorDoc.java,
- classpath/tools/com/sun/javadoc/Doc.java,
- classpath/tools/com/sun/javadoc/DocErrorReporter.java,
- classpath/tools/com/sun/javadoc/Doclet.java,
- classpath/tools/com/sun/javadoc/ExecutableMemberDoc.java,
- classpath/tools/com/sun/javadoc/FieldDoc.java,
- classpath/tools/com/sun/javadoc/MemberDoc.java,
- classpath/tools/com/sun/javadoc/MethodDoc.java,
- classpath/tools/com/sun/javadoc/PackageDoc.java,
- classpath/tools/com/sun/javadoc/ParamTag.java,
- classpath/tools/com/sun/javadoc/Parameter.java,
- classpath/tools/com/sun/javadoc/ProgramElementDoc.java,
- classpath/tools/com/sun/javadoc/RootDoc.java,
- classpath/tools/com/sun/javadoc/SeeTag.java,
- classpath/tools/com/sun/javadoc/SerialFieldTag.java,
- classpath/tools/com/sun/javadoc/SourcePosition.java,
- classpath/tools/com/sun/javadoc/Tag.java,
- classpath/tools/com/sun/javadoc/ThrowsTag.java,
- classpath/tools/com/sun/javadoc/Type.java,
- classpath/tools/com/sun/javadoc/TypeVariable.java,
- classpath/tools/com/sun/tools/doclets/Taglet.java,
- classpath/tools/com/sun/tools/javac/Main.java,
- classpath/tools/com/sun/tools/javac/Messages.java,
- classpath/tools/sun/rmi/rmic/Main.java,
- classpath/tools/sun/rmi/rmic/Messages.java: New files.
- * Makefile.in, classpath/Makefile.in, classpath/configure,
- classpath/doc/Makefile.in, classpath/doc/api/Makefile.in,
- classpath/examples/Makefile.in, classpath/external/Makefile.in,
- classpath/external/jsr166/Makefile.in,
- classpath/external/relaxngDatatype/Makefile.in,
- classpath/external/sax/Makefile.in,
- classpath/external/w3c_dom/Makefile.in,
- classpath/include/Makefile.in, classpath/include/config.h.in,
- classpath/lib/Makefile.in,
- classpath/lib/gnu/classpath/Configuration.class,
- classpath/native/Makefile.in, classpath/native/fdlibm/Makefile.in,
- classpath/native/jawt/Makefile.in,
- classpath/native/jni/Makefile.in,
- classpath/native/jni/classpath/Makefile.in,
- classpath/native/jni/gconf-peer/Makefile.in,
- classpath/native/jni/gtk-peer/Makefile.in,
- classpath/native/jni/java-io/Makefile.in,
- classpath/native/jni/java-lang/Makefile.in,
- classpath/native/jni/java-net/Makefile.in,
- classpath/native/jni/java-nio/Makefile.in,
- classpath/native/jni/java-util/Makefile.in,
- classpath/native/jni/midi-alsa/Makefile.in,
- classpath/native/jni/midi-dssi/Makefile.in,
- classpath/native/jni/native-lib/Makefile.in,
- classpath/native/jni/qt-peer/Makefile.in,
- classpath/native/jni/xmlj/Makefile.in,
- classpath/native/plugin/Makefile.in,
- classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
- classpath/tools/Makefile.in, configure,
- gnu/classpath/Configuration.h: Regenerate.
-
-2007-03-12 Kyle Galloway <kgallowa@redhat.com>
-
- * jvmti.cc (_Jv_JVMTI_GetArgumentsSize): Make wide type arrays count
- as a sigle slot.
-
-2007-03-12 Marco Trudel <mtrudel@gmx.ch>
-
- * java/lang/natString.cc (getBytes (jstring enc)):
- Fixed the loop for multiple cycles, Code cleanup
-
-2007-03-09 Tom Tromey <tromey@redhat.com>
-
- * sources.am, Makefile.in: Rebuilt.
- * scripts/makemake.tcl (scan_directory): Allow service files to be
- omitted.
- Omit all XML-related service files.
-
-2007-03-07 Tom Tromey <tromey@redhat.com>
-
- * configure: Rebuilt.
- * configure.ac: Clear vm-tools-packages.
-
-2007-03-07 Mohan Embar <gnustuff@thisiscool.com>
-
- * java/lang/Win32Process.java: Added nested class EOFInputStream.
- * java/lang/natWin32Process.cc (ChildProcessPipe): Added DUMMY
- enum and implementation.
- (startProcess): Use redirect flag.
- * classpath/lib/java/lang/Win32Process.class: Regenerated.
- * classpath/lib/java/lang/Win32Process$EOFInputStream.class: New.
- * gcj/javaprims.h: Regenerated.
- * java/lang/Win32Process$EOFInputStream.h: New.
-
-2007-03-07 Andrew Haley <aph@redhat.com>
-
- * libgcj_bc.c (JvRunMainName): Declare.
-
-2007-03-07 Gary Benson <gbenson@redhat.com>
-
- * sources.am, Makefile.in: Rebuilt.
-
-2007-03-07 Mohan Embar <gnustuff@thisiscool.com>
-
- * gcj/javaprims.h: Regenerated.
-
-2007-03-07 Alexandre Oliva <aoliva@redhat.com>
-
- * include/jvm.h (_Jv_ClosureListFinalizer): New.
- (_Jv_Linker::create_error_method): Adjust.
- * boehm.cc (_Jv_ClosureListFinalizer): New.
- * nogc.cc (_Jv_ClosureListFinalizer): New.
- * java/lang/Class.h (class _Jv_ClosureList): New.
- (class java::lang::Class): Declare it as friend.
- * java/lang/natClass.cc (_Jv_ClosureList::releaseClosures): New.
- (_Jv_ClosureList::registerClousure): New.
- * include/execution.h (_Jv_ExecutionEngine): Add get_closure_list.
- (_Jv_CompiledEngine::do_get_closure_list): New.
- (_Jv_CompiledEngine::_Jv_CompiledEngine): Use it.
- (_Jv_IndirectCompiledClass): Add closures.
- (_Jv_IndirectCompiledEngine::get_aux_info): New.
- (_Jv_IndirectCompiledEngine::do_allocate_field_initializers): Use
- it.
- (_Jv_IndirectCompiledEngine::do_get_closure_list): New.
- (_Jv_IndirectCompiledEngine::_Jv_IndirectCompiledEngine): Use it.
- (_Jv_InterpreterEngine::do_get_closure_list): Declare.
- (_Jv_InterpreterEngine::_Jv_InterpreterEngine): Use it.
- * interpret.cc (FFI_PREP_RAW_CLOSURE): Use _loc variants.
- (node_closure): Add closure list.
- (_Jv_InterpMethod::ncode): Add jclass argument. Use
- ffi_closure_alloc and the separate code pointer. Register the
- closure for finalization.
- (_Jv_JNIMethod::ncode): Likewise.
- (_Jv_InterpreterEngine::do_create_ncode): Pass klass to ncode.
- (_Jv_InterpreterEngine::do_get_closure_list): New.
- * include/java-interp.h (_Jv_InterpMethod::ncode): Adjust.
- (_Jv_InterpClass): Add closures field.
- (_Jv_JNIMethod::ncode): Adjust.
- * defineclass.cc (_Jv_ClassReader::handleCodeAttribute): Adjust.
- (_Jv_ClassReader::handleMethodsEnd): Likewise.
- * link.cc (struct method_closure): Add closure list.
- (_Jv_Linker::create_error_method): Add jclass argument. Use
- ffi_closure_alloc and the separate code pointer. Register the
- closure for finalization.
- (_Jv_Linker::link_symbol_table): Remove outdated comment about
- sharing of otable and atable. Adjust.
- * java/lang/reflect/natVMProxy.cc (ncode_closure): Add closure
- list.
- (ncode): Add jclass argument. Use ffi_closure_alloc and the
- separate code pointer. Register the closure for finalization.
- (java::lang::reflect::VMProxy::generateProxyClass): Adjust.
- * testsuite/libjava.jar/TestClosureGC.java: New.
- * testsuite/libjava.jar/TestClosureGC.out: New.
- * testsuite/libjava.jar/TestClosureGC.xfail: New.
- * testsuite/libjava.jar/TestClosureGC.jar: New.
-
-2007-03-06 Kyle Galloway <kgallowa@redhat.com>
-
- * classpath/gnu/classpath/jdwp/exception/AbsentInformationException.java: New file.
- * classpath/lib/gnu/classpath/jdwp/exception/AbsentInformationException.class: Ditto.
- * gnu/classpath/jdwp/exception/AbsentInformationException.h: Ditto.
- * gnu/classpath/jdwp/natVMMethod.cc: Add CHECK_INTERP_CLASS macro.
- (VMMethod::getLineTable): Use new macro.
- (VMMethod::getVariableTable): Implement.
- * sources.am: Regenerated.
- * Makefile.in: Ditto.
-
-2007-03-06 Tom Tromey <tromey@redhat.com>
-
- * Makefile.in: Rebuilt.
- * Makefile.am (bin_PROGRAMS): Added gcjh.
- (gcjh_SOURCES, gcjh_LDFLAGS, gcjh_LINK, gcjh_LDADD,
- gcjh_DEPENDENCIES): New variables.
-
-2007-03-06 Kyle Galloway <kgallowa@redhat.com>
-
- * jvmti.cc(_Jv_JVMTI_GetLocalVariableTable): Fix _Jv_Malloc parameters.
- * testsuite/libjava.jvmti/interp/natgetlocalvartable.cc
- (do_getlocalvartable_tests): Add Deallocate calls to free strings.
-
-2007-03-05 Matthias Klose <doko@debian.org>
-
- * Makefile.am (gij_LDFLAGS): Use dbexecdir.
- * Makefile.in: Regnerate.
-
-2007-03-05 Mark Wielaard <mark@klomp.org>
-
- * java/lang/Character.java: Re-merged with Classpath.
- * java/lang/natString.cc (nativeCompareTo): Renamed from
- compareTo.
- * java/lang/StringBuilder.java: Re-merged with Classpath.
- * java/lang/String.java: Re-merged with Classpath.
- (nativeCompareTo): Renamed from compareTo.
- * java/lang/StringBuffer.java: Re-merged with Classpath.
- * jni.cc (_Jv_JNI_GetAnyMethodID): Split calls to append.
-
-2007-03-05 Andrew Haley <aph@redhat.com>
-
- * java/lang/reflect/natVMProxy.cc (ncode_closure.meth): Delete.
- (generateProxyClass): Don't pass method to ncode.
- (run_proxy): Call _Jv_GetReflectedMethod to find the proxy method.
- * java/lang/reflect/Method.h: Rebuild.
- * java/lang/reflect/Method.java (internalGetParameterTypes,
- internalGetExceptionTypes): New methods.
- * headers.txt (class java/lang/reflect/Method): Declare
- _Jv_GetReflectedMethod. Be its friend.
- * java/lang/natClass.cc (_Jv_GetReflectedMethod): New method.
- * java/lang/Class.h: Declare it. Be its friend.
-
-2007-03-05 Tom Tromey <tromey@redhat.com>
-
- * sources.am, Makefile.in: Rebuilt.
- * scripts/makemake.tcl (emit_package_rule): Don't omit
- VMProcess.java.
- * Makefile.am (nat_source_files): Added natVMProcess.cc.
- (inner_nat_headers): Added ImmediateEOFInputStream.h.
- * gcj/javaprims.h: Regenerated.
- * java/lang/System.java (EnvironmentMap): Now package-private.
- (EnvironmentMap(Map)): New constructor.
- (EnvironmentMap.put): New method.
- * java/lang/natWin32Process.cc (startProcess): Update.
- * java/lang/Win32Process.java (Win32Process): Added 'redirect'
- argument.
- (startProcess): Likewise.
- * java/lang/EcosProcess.java (EcosProcess): Added 'redirect'
- argument.
- * java/lang/natPosixProcess.cc (nativeSpawn): Handle redirection.
- * java/lang/PosixProcess.java (redirect): New field.
- (PosixProcess): Added 'redirect' argument.
- * java/lang/natRuntime.cc (execInternal): Added 'redirect'
- argument to Process creation.
- * java/lang/natVMProcess.cc: New file.
- * java/lang/ProcessBuilder.java: Removed.
- * java/lang/VMProcess.java: New file.
-
-2007-03-03 Andrew Haley <aph@redhat.com>
-
- * java/lang/natClass.cc (parseAnnotationElement): Correct long
- annotations to read JV_CONSTANT_Long, not JV_CONSTANT_Double.
-
-2007-03-02 Andrew Haley <aph@redhat.com>
-
- * sun/reflect/annotation/AnnotationInvocationHandler.java:
- Generify in a few places.
- (equals): Rewrite to use invoke on local proxy.
- (deepToString): Remove most of it.
- (toString): Make nonstatic.
- (arrayClone): Delete.
- (coerce): New method.
- (invoke): Rewrite to handle gcj's structures correctly.
- * java/lang/natClass.cc (getDeclaredAnnotations): Fix test for
- null loader.
- * sources.am: Regenerate.
- * Makefile.am: Likewise.
-
-2007-03-02 Andrew Haley <aph@redhat.com>
-
- * sun/reflect/annotation/AnnotationInvocationHandler.java:
- Whitespace only changes.
-
-2007-03-02 Andrew Haley <aph@redhat.com>
-
- * sun/reflect/annotation/AnnotationInvocationHandler.java: Moved
- from Classpath to libgcj local.
-
-2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
-
- * Makefile.am: Add dummy install-pdf target.
- * Makefile.in: Regenerate
- * include/Makefile.in: Regenerate
- * testsuite/Makefile.in: Regenerate
- * gcj/Makefile.in: Regenerate
-
-2007-02-23 Gary Benson <gbenson@redhat.com>
-
- * gnu/gcj/tools/gcj_dbtool/Main.java: Updated copyright year.
-
-2007-02-23 Gary Benson <gbenson@redhat.com>
-
- * java/lang/VMCompiler.java
- (compileClass): Don't lose zeros from within the digest.
-
-2007-02-22 Jakub Jelinek <jakub@redhat.com>
-
- PR libgcj/17002
- PR classpath/28550
- * java/util/VMTimeZone.java (getDefaultTimeZoneId): To read
- /etc/localtime, use ZoneInfo.readTZFile instead of
- VMTimeZone.readtzFile. Get better timezone name for /etc/localtime,
- either if it is a symlink or through /etc/sysconfig/clock.
- (readSysconfigClockFile): New static method.
- (readtzFile): Removed.
- * java/lang/System.java: Add gnu.java.util.zoneinfo.dir to comments.
- * posix.cc (_Jv_platform_initProperties): Set
- gnu.java.util.zoneinfo.dir.
- * sources.am (gnu_java_util_source_files): Add
- classpath/gnu/java/util/ZoneInfo.java.
- * Makefile.in: Regenerated.
- * java/util/VMTimeZone.h: Regenerated.
- * java/util/TimeZone.h: Regenerated.
- * gnu/java/util/ZoneInfo.h: Generated.
-
-2007-02-22 Mohan Embar <gnustuff@thisiscool.com>
-
- * include/win32-threads.h: Added #undef OUT.
-
-2007-02-21 Kyle Galloway <kgallowa@redhat.com>
-
- * jvmti.cc (_Jv_JVMTI_GetArgumentsSize): New function.
- * testsuite/libjava.jvmti/interp/getargssize.java: New test.
- * testsuite/libjava.jvmti/interp/getargssize.h: Ditto.
- * testsuite/libjava.jvmti/interp/getargssize.jar: Ditto.
- * testsuite/libjava.jvmti/interp/getargssize.out: Ditto.
- * testsuite/libjava.jvmti/interp/natgetargssize.cc: Ditto.
-
-2007-02-21 Gary Benson <gbenson@redhat.com>
-
- * java/util/GregorianCalendar.java: Removed.
- * sources.am, Makefile.in: Rebuilt.
-
-2007-02-20 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (jdwpClassPrepareCB): Move class status stuff to ...
- (getClassStatus): ... here.
-
-2007-02-20 Gary Benson <gbenson@redhat.com>
-
- * gnu/awt/xlib/XEventLoop.h: Regenerated.
- * gnu/java/awt/peer/gtk/GThreadMutex.h: Likewise.
- * gnu/java/rmi/server/ConnectionRunnerPool$ConnectionRunner.h:
- Likewise.
- * gnu/java/rmi/server/UnicastConnectionManager.h: Likewise.
- * java/lang/SecurityManager.h: Likewise.
- * java/lang/Thread.h: Likewise.
- * java/security/VMSecureRandom$Spinner.h: Likewise.
- * java/util/concurrent/atomic/AtomicBoolean.h: Likewise.
- * java/util/concurrent/atomic/AtomicInteger.h: Likewise.
- * java/util/concurrent/atomic/AtomicLong.h: Likewise.
- * java/util/concurrent/atomic/AtomicReference.h: Likewise.
- * java/util/concurrent/ConcurrentHashMap$HashEntry.h: Likewise.
- * java/util/concurrent/ConcurrentHashMap$Segment.h: Likewise.
- * java/util/concurrent/ConcurrentLinkedQueue.h: Likewise.
- * java/util/concurrent/ConcurrentLinkedQueue$Node.h: Likewise.
- * java/util/concurrent/ConcurrentSkipListMap.h: Likewise.
- * java/util/concurrent/ConcurrentSkipListMap$Index.h: Likewise.
- * java/util/concurrent/ConcurrentSkipListMap$Node.h: Likewise.
- * java/util/concurrent/Exchanger.h: Likewise.
- * java/util/concurrent/Exchanger$Node.h: Likewise.
- * java/util/concurrent/FutureTask$Sync.h: Likewise.
- * java/util/concurrent/LinkedBlockingQueue$Node.h: Likewise.
- * java/util/concurrent/locks/AbstractQueuedLongSynchronizer.h:
- Likewise.
- * java/util/concurrent/locks/AbstractQueuedLongSynchronizer$Node.h:
- Likewise.
- * java/util/concurrent/locks/AbstractQueuedSynchronizer.h: Likewise.
- * java/util/concurrent/locks/AbstractQueuedSynchronizer$Node.h:
- Likewise.
- * java/util/concurrent/ScheduledThreadPoolExecutor.h: Likewise.
- * java/util/concurrent/SynchronousQueue.h: Likewise.
- * java/util/concurrent/SynchronousQueue$TransferQueue.h: Likewise.
- * java/util/concurrent/SynchronousQueue$TransferQueue$QNode.h:
- Likewise.
- * java/util/concurrent/SynchronousQueue$TransferStack.h: Likewise.
- * java/util/concurrent/SynchronousQueue$TransferStack$SNode.h:
- Likewise.
- * java/util/concurrent/ThreadPoolExecutor.h: Likewise.
- * java/util/concurrent/ThreadPoolExecutor$Worker.h: Likewise.
- * java/util/logging/ErrorManager.h: Likewise.
- * javax/swing/plaf/basic/BasicSpinnerUI$2.h: Likewise.
- * javax/swing/plaf/basic/BasicSpinnerUI$4.h: Likewise.
-
-2007-02-16 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (get_line_table): New function.
- (handle_single_step): New function.
- (jdwpSingleStepCB): New function.
- (jdwpVMInitCB): Define a JVMTI single step
- callback, but don't enable it until needed.
-
-2007-02-16 David Daney <ddaney@avtrex.com>
-
- * java/lang/Thread.java (Thread(ThreadGroup, Runnable, String)): Pass
- new parameter constructor.
- (Thread(ThreadGroup, Runnable, String, long)): Same.
- (Thread(String, boolean)): New constructor.
- (Thread(Thread, ThreadGroup, Runnable, String): Add parameter
- noInheritableThreadLocal, don't call
- InheritableThreadLocal.newChildThread if set.
- * java/lang/PosixProcess.java(ProcessManager()): Set
- noInheritableThreadLocal in super.
- * java/lang/natThread.cc (_Jv_AttachCurrentThread): Pass new
- parameter to Thread constructor.
- (_Jv_AttachCurrentThreadAsDaemon): Same.
- * java/lang/Thread.h: Regenerate.
- * classpath/lib/java/lang/Thread.class: Same.
- * classpath/lib/java/lang/PosixProcess$EOFInputStream.class: Same.
- * classpath/lib/java/lang/PosixProcess.class: Same.
- * classpath/lib/java/lang/Thread$State.class: Same.
- * classpath/lib/java/lang/PosixProcess$ProcessManager.class: Same.
-
-2007-02-16 Kyle Galloway <kgallowa@redhat.com>
-
- * interpret.cc: Add extra DEBUG_LOCALS_INSN calls for multi-slot
- variables to maintain type info.
- * interpret-run.cc: Add local variable info to frame in the debug
- interpreter.
- * jvmti.cc (getLocalFrame): New method.
- (_Jv_JVMTI_GetLocalObject): New method.
- (_Jv_JVMTI_GetLocallInt): New method.
- (_Jv_JVMTI_GetLocalFloat): New method.
- (_Jv_JVMTI_GetLocalLong): New method.
- (_Jv_JVMTI_GetLocalDouble): New method.
- (_Jv_JVMTI_SetLocalObject): New method.
- (_Jv_JVMTI_SetLocalInt): New method.
- (_Jv_JVMTI_SetLocalFloat): New method.
- (_Jv_JVMTI_SetLocalLong): New method.
- (_Jv_JVMTI_SetLocalDouble): New method.
-
-2007-02-16 Gary Benson <gbenson@redhat.com>
-
- * gnu/gcj/tools/gcj_dbtool/Main.java
- (bytesToString): Don't lose zeros from within the digest.
-
-2007-02-15 Andrew Haley <aph@redhat.com>
-
- * Makefile.am (nat_source_files): Remove
- java/lang/management/natVMManagementFactory.cc.
- * java/lang/Thread.java (getStackTrace): Use reflection to call
- the ManagementFactory.
- * java/lang/management/VMManagementFactory.java: Remove native
- methods.
- * java/lang/management/natVMManagementFactory.cc: Deleted.
- * sources.am: Regnerate.
- * scripts/makemake.tcl: Add new "bcheaders" type.
- Move java/lang/management and gnu/classpath/management to "bc".
- Move gnu/java/lang/management to "bcheaders".
-
-2007-02-15 Kyle Galloway <kgallowa@redhat.com>
-
- * interpret.cc (_Jv_InterpMethod::check_handler): New method.
- * interpret-run.cc: Change the catch section to report exception
- events and to use the new check_handler method.
- * include/java-interp.h (_Jv_InterpMethod): Add check_handler.
- * gnu/gcj/jvmti/ExceptionEvent.java: New file.
- * gnu/gcj/jvmti/ExceptionEvent.h: New file.
- * gnu/gcj/jvmti/natExceptionEvent.cc: New file.
- * libjava/classpath/lib/gnu/gcj/jvmti/ExceptionEvent.class: New
- file.
- * sources.am: Added ExceptionEvent.java.
- * Makefile.am: Added natExceptionEvent.cc
- * Makefile.in: Regenerated.
- * include/Makefile.in: Regenerated.
- * gcj/Makefile.in: Regenerated.
-
-2007-02-15 Johannes Schmidt <jschmidt@avtrex.com>
- David Daney <ddaney@avtrex.com>
-
- * configure.ac: Create vm-tools-packages file. Add
- gnu/gcj/tools/gc_analyze to standard.omit and vm-tools-packages.
- Check for /proc/self/maps.
- * Makefile.am (bin_PROGRAMS): Added gc-analyze.
- (gc_analyze_SOURCES): New.
- (gc_analyze_LDFLAGS): New.
- (gc_analyze_LINK): New.
- (gc_analyze_LDADD): New.
- (gc_analyze_DEPENDENCIES): New.
- (nat_source_files): Add gnu/gcj/util/natGCInfo.cc.
- * Makefile.in: Regenerated.
- * configure: Regenerated.
- * include/config.h.in: Regenerated.
- * sources.am: Regenerated.
- * scripts/makemake.tcl: Don't include gc-analyze classes in libgcj.
- * gnu/gcj/tools/gc_analyze/SymbolLookup.java: New.
- * gnu/gcj/tools/gc_analyze/ObjectMap.java: New.
- * gnu/gcj/tools/gc_analyze/MemoryMap.java: New.
- * gnu/gcj/tools/gc_analyze/SymbolTable.java: New.
- * gnu/gcj/tools/gc_analyze/BlockMap.java: New.
- * gnu/gcj/tools/gc_analyze/BytePtr.java: New.
- * gnu/gcj/tools/gc_analyze/ItemList.java: New.
- * gnu/gcj/tools/gc_analyze/ToolPrefix.java: New.
- * gnu/gcj/tools/gc_analyze/MemoryAnalyze.java: New.
- * gnu/gcj/util/GCInfo.java: New.
- * gnu/gcj/util/GCInfo.h: New.
- * gnu/gcj/util/natGCInfo.cc: New.
- * gnu/gcj/util/UtilPermission.java: New.
- * gnu/gcj/util/UtilPermission.h: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/SymbolTable.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/ObjectMap$ObjectItem.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryMap$RangeComparator.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/BlockMap$PtrMarks.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryMap$Range.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/BlockMap.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/BytePtr.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$SubstringComparator.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/ItemList.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/ToolPrefix.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$1$Info.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$1.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$2.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$3.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$4.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$OptionParser.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/BlockMap$SizeKind.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/SymbolLookup.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/ObjectMap.class: New.
- * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryMap.class: New.
- * classpath/lib/gnu/gcj/util/GCInfo.class: New.
- * classpath/lib/gnu/gcj/util/UtilPermission.class: New.
-
-2007-02-15 David Daney <ddaney@avtrex.com>
-
- * gnu/java/net/PlainSocketImpl.h: Regenerate.
- * gnu/classpath/jdwp/VMVirtualMachine.h: Same.
- * gnu/classpath/jdwp/VMFrame.h: Same.
- * java/net/Socket.h: Same.
- * java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet.h: Same.
-
-2007-02-15 Kyle Galloway <kgallowa@redhat.com>
-
- * defineclass.cc (_Jv_ClassReader::read_one_code_attribute):
- Added LocalVariableTable attribute handling.
- (_Jv_ClassReader::pool_Utf8_to_char_arr): New method.
- * jvmti.cc (_Jv_JVMTI_GetLocalVariableTable): New method.
- * include/java-interp.h: Added local_var_table and
- local_var_table_len fields to _Jv_InterpMethod.
- (_Jv_InterpMethod::get_local_var_table): New method.
- * testsuite/libjava.jvmti/interp/getlocalvartable.java: New test.
- * testsuite/libjava.jvmti/interp/getlocalvartable.jar: New test.
- * testsuite/libjava.jvmti/interp/getlocalvartable.out: Output
- for new test.
- * testsuite/libjava.jvmti/interp/getlocalvartable.h: New test.
- * testsuite/libjava.jvmti/interp/natgetlocalvartable.cc: New test.
-
-2007-02-15 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine (getFrames): Implement.
-
-2007-02-13 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (jdwpBreakpointCB): New function.
- (jdwpVMInitCB): Define and enable the breakpoint
- callback.
-
-2007-02-13 Andrew Haley <aph@redhat.com>
-
- * testsuite/libjava.lang/Divide_2.out
- * testsuite/libjava.lang/Divide_2.java: New test.
-
-2007-02-12 Keith Seitz <keiths@redhat.com>
-
- * jvmti.cc (_Jv_JVMTI_GetStackTrace): Remove cast
- from jthread to Thread *; it is no longer needed.
- (_Jv_JVMTI_GetFrameCount): Likewise.
- Fix small formatting typo.
-
-2007-02-12 Tom Tromey <tromey@redhat.com>
-
- * sources.am, Makefile.in: Rebuilt.
- * java/lang/Socket.java: Removed override.
- * java/lang/DatagramSocket.java: Removed override.
- * gnu/java/net/PlainSocketImpl.java (localSocketAddress): New
- field.
- (getLocalAddress): New method.
- * gnu/java/net/PlainDatagramSocketImpl.java
- (PlainDatagramSocketImpl): Throws IOException.
- * gnu/java/net/natPlainSocketImplPosix.cc (write): Remove
- 'sizeof'.
- (read): Likewise.
-
-2007-02-09 Jakub Jelinek <jakub@redhat.com>
-
- * java/util/VMTimeZone.java: Rewrite to handle both the old
- 'TZif\0' format and the new one.
-
-2007-02-10 Andrew Haley <aph@redhat.com>
-
- PR java/30742
- * gnu/classpath/natVMStackWalker.cc (GET_CALLING_CLASS): New.
- (getCallingClass): Call GET_CALLING_CLASS.
- (getCallingClassLoader): Likewise.
-
-2007-02-10 Mohan Embar <gnustuff@thisiscool.com>
-
- * configure: Rebuilt.
- * configure.ac (GCJH): Reverted second part of patch of 2006-12-20.
-
-2007-02-10 Mohan Embar <gnustuff@thisiscool.com>
-
- * Makefile.in: Rebuilt.
- * Makefile.am (BUILD_ECJ1): Unify the command for renaming ecjx to
- the host's ecj1 executable.
-
-2007-02-09 Richard Henderson <rth@redhat.com>
-
- * sysdep/alpha/locks.h (read_barrier): New.
-
-2007-02-09 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/VMVirtualMachine.java
- (_stepping_threads): New member.
- * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class:
- Regenerated.
- * gnu/classpath/jdwp/VMVirtualMachine.h:
- Regenerated.
- * gnu/claspath/jdwp/natVMVirtualMachine.cc
- (get_request_step_filter): New function.
- (DISABLE_EVENT): New macro.
- (initialize): Initialize _stepping_threads.
- (registerEvent): Implement EVENT_SINGLE_STEP.
- (unregisterEvent): Likewise.
-
-2007-02-08 Keith Seitz <keiths@redhat.com>
-
- * sources.am: Regenerate.
- * Makefile.in: Regenerate.
- * testsuite/Makefile.in: Regenerate.
- * gcj/Makefile.in: Regenerate.
- * include/Makefile.in: Regenerate.
-
- * classpath/lib/javax/management/MBeanServerFactory.class:
- Regenerate.
-
-2007-02-08 Kyle Galloway <kgallowa@redhat.com>
-
- * classpath/gnu/classpath/jdwp/processor/
- StackFrameCommandSet.java (executeGetValues): Pass jlong instead
- of ByteBuffer.
- (executeSetValues): Ditto.
- (executeThisObject): Ditto.
- * classpath/gnu/classpath/jdwp/processor/
- StackFrameCommandSet.class: Rebuilt.
- * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class:
- Rebuilt.
- * classpath/lib/gnu/classpath/jdwp/VMFrame.class: Rebuilt.
- * classpath/lib/gnu/classpath/jdwp/exception/
- InvalidFrameException.java: New file.
- * gnu/classpath/jdwp/VMFrame.java: Added field for thread of
- frame.
- (Constructor): New method.
- * gnu/classpath/jdwp/VMFrame.h: Regenerated.
- * gnu/classpath/jdwp/VMVirtualMachine.java
- (getFrame): Changed ByteBuffer to jlong.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (getFrame): Implement.
- * gnu/classpath/jdwp/VMVirtualMachine.h: Regenerated.
-
-2007-02-08 Kyle Galloway <kgallowa@redhat.com>
-
- * include/java-interp.h (_Jv_InterpFrame): obj_ptr field added
- to hold "this" pointer for frame.
- (_Jv_InterpFrame::get_this_ptr): New method.
- * interpret-run.cc: Copy the "this" pointer into obj_ptr.
-
-2007-02-07 Keith Seitz <keiths@redhat.com>
-
- * include/java-interp.h (_Jv_Frame::depth):
- New function.
- * jvmti.cc (_Jv_JVMTI_GetFrameCount): Use _Jv_Frame::depth.
-
-2007-02-07 Kyle Galloway <kgallowa@redhat.com>
-
- * jvmti.cc (CHECK_FOR_NATIVE_METHOD): New macro.
- (_Jv_JVMTI_GetMaxLocals): New method.
- * include/java-interp.h
- (_Jv_InterpMethod::get_max_locals): New method.
-
-2007-02-01 Marco Trudel <mtrudel@gmx.ch>
-
- * jni.cc (_Jv_JNI_DeleteWeakGlobalRef): Check for NULL objects.
-
-2007-02-07 Tom Tromey <tromey@redhat.com>
-
- * testsuite/libjava.jni/init.c: New file.
- * testsuite/libjava.jni/init.java: New file.
- * testsuite/libjava.jni/init.out: New file.
- * testsuite/libjava.jni/init.jar: New file.
- * testsuite/libjava.jni/init.h: New file.
- * testsuite/libjava.jni/init$NativeClass.h: New file.
-
-2007-02-07 Jakub Jelinek <jakub@redhat.com>
-
- PR libgomp/28468
- * configure: Regenerate.
-
-2007-02-06 Andrew Haley <aph@redhat.com>
-
- * scripts/makemake.tcl (emit_bc_rule): Set the source filename.
- * sources.am: Rebuild.
-
-2007-02-05 Keith Seitz <keiths@redhat.com>
-
- * jvmti.cc (_envListLock): Change type to
- ReentrantReadWriteLock.
- (_Jv_JVMTI_DisposeEnvironment): Switch to read/write
- lock.
- (check_enabled_event): Likewise.
- (_Jv_GetJVMTIEnv): Likewise.
- (_Jv_JVMTI_Init): Likewise.
- (_Jv_JVMTI_PostEvent): Likewise.
-
-2007-02-05 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (registerEvent): Implement EVENT_BREAKPOINT.
- (unregisterEvent): Likewise.
- (get_request_location): New function.
-
-2007-02-05 Matthias Klose <doko@debian.org>
-
- testsuite/Makefile.am (compile-tests): Fix typo.
- testsuite/Makefile.in: Regenerate.
-
-2007-02-02 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (getFrameCount):
- Implment.
-
-2007-02-02 Jakub Jelinek <jakub@redhat.com>
-
- * configure.ac (libjava_cv_anon_version_script): New test.
- (ANONVERSCRIPT): New AM_CONDITIONAL.
- * configure: Rebuilt.
- * Makefile.am (extra_ldflags_libjava): Link with -Wl,--version-script
- if ANONVERSCRIPT.
- * Makefile.in: Rebuilt.
- (libgcj_la_DEPENDENCIES): Depend on libgcj.ver.
- * libgcj.ver: New file.
-
-2007-02-01 David Daney <ddaney@avtrex.com>
-
- * scripts/makemake.tcl: Replace gnu/xml build with build of all
- its subpackages.
- * sources.am: Regenerate.
- * Makefile.in: Regenerate.
-
-2007-02-01 Tom Tromey <tromey@redhat.com>
-
- * java/lang/ClassLoader.java (getResources): No longer final.
-
-2007-02-01 Tom Tromey <tromey@redhat.com>
-
- * java/util/logging/LogManager.java (loggers): Genericized.
- (addLogger): Merged.
- (findAncestor): Likewise.
- (getLogger): Likewise.
- (getLoggerNames): Genericized.
- (reset): Merged.
- (getLevelProperty): Likewise.
- * java/lang/reflect/Method.java (getDeclaringClass): Genericized.
- * java/lang/reflect/Constructor.java (getParameterTypes):
- Genericized.
- (getExceptionTypes): Likewise.
- (newInstance): Likewise.
- * java/lang/reflect/Array.java (newInstance): Genericized.
- * java/lang/Object.java (getClass): Genericized.
- * java/nio/charset/spi/CharsetProvider.java (charsets):
- Genericized.
- * java/text/Collator.java: Implement Comparable<Object>.
-
-2007-02-01 Tom Tromey <tromey@redhat.com>
-
- * java/util/Calendar.java: Implement Comparable<Calendar>. Update
- comments.
- (clear): Call complete.
- (setTimeZone): Call computeTime, computeFields.
- (compareTo): New method.
- * java/nio/charset/Charset.java: Implement Comparable<Charset>.
- (availableCharsets): Genericized.
- (aliases): Likewise.
- (compareTo): Changed argument type.
- * java/lang/ClassLoader.java (loadClass): Genericized.
- (findClass): Likewise.
- (defineClass): Likewise.
- (resolveClass): Likewise.
- (findSystemClass): Likewise.
- (setSigners): Likewise.
- (findLoadedClass): Likewise.
- (getResources): Likewise.
- (findResources): Likewise.
- (getSystemResources): Likewise.
- (checkInitialized): New method.
- * java/lang/Class.java (getCanonicalName): New method.
-
-2007-01-31 Keith Seitz <keiths@redhat.com>
-
- * include/jvmti-int.h (JVMTI): Declare member "enabled".
- * jvmti.cc (JVMTI): Add member "enabled".
- (_Jv_GetJVMTIEnv): Mark JVMTI enabled.
- * interpret.cc (_Jv_InterpMethod::ncode): Use JVMTI::enabled
- instead of gnu::classpath::jdwp::Jdwp::isDebugging.
- (_Jv_CompileMethod): If JVMTI is enabled, use run_debug
- instead of run to compile the method.
-
- * interpret-run.cc [DEBUG] (NEXT_INSN): Add JVMTI single step
- notification.
-
-2007-01-31 Andreas Tobler <a.tobler@schweiz.org>
-
- * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one): Add
- -shared-libgcc to the cxxflaglist for Darwin.
-
-2007-01-31 Tom Tromey <tromey@redhat.com>
-
- * scripts.am, Makefile.in: Rebuilt.
- * scripts/makemake.tcl (gnu/javax/swing/text/html/parser): Build
- as 'ordinary'.
- (emit_ordinary_rule): New proc.
-
-2007-01-31 Keith Seitz <keiths@redhat.com>
-
- * testsuite/libjava.jvmti/getmethodname.h: New file.
- * testsuite/libjava.jvmti/getmethodname.jar: New file.
-
-2007-01-31 Andrew Haley <aph@redhat.com>
-
- * prims.cc (_Jv_Abort): fflush (stderr).
- * java/lang/natClassLoader.cc (_Jv_CheckABIVersion): Abort.
-
-2007-01-31 Tom Tromey <tromey@redhat.com>
-
- * configure, Makefile.in: Rebuilt.
- * configure.ac (JAR): Check for -@ feature.
- * Makefile.am (libgcj-$(gcc_version).jar): Use find -prune.
-
-2007-01-31 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/30606:
- * configure, include/config.h.in: Rebuilt.
- * configure.ac: Check for magic_t in magic.h.
- * java/net/natVMURLConnection.cc: Use HAVE_MAGIC_T.
-
-2007-01-30 Tom Tromey <tromey@redhat.com>
-
- * Makefile.in: Rebuilt.
- * Makefile.am (libgcj-$(gcc_version).jar): Rewrote.
-
-2007-01-30 Andreas Tobler <a.tobler@schweiz.org>
-
- * testsuite/libjava.jvmti/natevents.cc (FieldModificationCB): Use a
- cast to print it right.
-
-2007-01-29 Kaloian Doganov <kaloian@doganov.org>
-
- PR libgcj/30600:
- * gnu/gcj/convert/BytesToCharsetAdaptor.java (read): Fix call to
- 'limit'.
-
-2007-01-29 Kyle Galloway <kgallowa@redhat.com>
-
- * include/java-interp.h: Added _Jv_Frame class and its two
- subclasses _Jv_InterpFrame and _Jv_NativeFrame. Also moved
- _Jv_FrameType from java-stack.h.
- * include/java-stack.h: Removed _Jv_FrameType.
- * java/lang/Thread.java: Added frame member to hold new
- composite frame stack.
- * java/lang/Thread.h: Regenerated.
- * java/lang/Thread.class: Rebuilt.
- * jni.cc (_Jv_JNIMethod::call): Push a frame onto the stack when
- calling a JNI method.
- * jvmti.cc (_Jv_JVMTI_GetStackTrace): New Method.
- (_Jv_JVMTI_GetFrameCount): New method.
- * stacktrace.cc (UnwindTraceFn): Modified to use new _Jv_Frame
- classes.
- * testsuite/libjava.jvmti/interp/getstacktrace.jar: New test.
- * testsuite/libjava.jvmti/interp/natgetstacktrace.cc: New test.
- * testsuite/libjava.jvmti/interp/getstacktrace.h: New test.
- * testsuite/libjava.jvmti/interp/getstacktrace.jar: New test.
- * testsuite/libjava.jvmti/interp/getstacktrace.out: Output file
- for test.
-
-2007-01-29 Tom Tromey <tromey@redhat.com>
-
- * interpret.cc (run_debug): Remove comment.
- (STOREA): Reformat.
- (STOREI): Likewise.
- (STOREF): Likewise.
- (STOREL): Likewise.
- (STORED): Likewise.
- (POKEI): Likewise.
- (run_normal_debug): Likewise.
- (run_synch_object_debug): Likewise.
- (run_class_debug): Likewise.
- (run_synch_class_debug): Likewise.
- (get1s): Likewise.
- (get1u): Likewise.
- (get2u): Likewise.
- (get4): Likewise.
- (NULLARRAYCHECK): Likewise.
- (ARRAYBOUNDSCHECK): Likewise.
- * interpret-run.cc (insn_target) <breakpoint>: Tidy.
-
-2007-01-29 Tom Tromey <tromey@redhat.com>
-
- * configure, Makefile.in: Rebuilt.
- * Makefile.am (bin_SCRIPTS): Never install scripts/jar.
- * configure.ac (BASH_JAR): Removed conditional.
- (JAR): Prefer the jar found by AC_CHECK_PROGS.
-
-2007-01-29 Tom Tromey <tromey@redhat.com>
-
- * Makefile.in: Rebuilt.
- * Makefile.am (interpret.lo): New target. Add -fwrap to
- AM_CXXFLAGS.
-
-2007-01-29 Keith Seitz <keiths@redhat.com>
-
- * include/jvmti_md.h (_CLASSPATH_VM_JVMTI_TYPES_DEFINED):
- Define.
- [__GCJ_JNI_IMPL__]: Define our own JVMTI types when building
- gcj. All jvmti object types now are defined to be their
- corresponding java classes.
- * jvmti.cc (_Jv_JVMTI_SuspendThread): Remove casting from
- jthread to Thread*.
- (_Jv_JVMTI_ResumeThread): Likewise.
- (_Jv_JVMTI_InterruptThread): Likewise.
- (_Jv_JVMTI_SetEventNotificationMode): Likewise.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (jdwpClassPrepareCB): Likewise.
- (jdwpThreadEndCB): Likewise.
- (jdwpThreadStartCB): Likewise.
- (jdwpVMInitCB): Likewise.
-
-2007-01-28 Michele Sandri <gpointorama@gmail.com>
-
- * gnu/java/nio/channels/natFileChannelWin32.cc
- (lock): Implemented.
- (unlock): Implemented.
-
-2007-01-27 Andreas Tobler <a.tobler@schweiz.org>
-
- PR libgcj/30513
- * configure.host: Add forgottten sysdep_dir to sparc. Add a flag to
- libgcj_flags to undefine 'sun' at compile time.
- * sysdep/sparc/locks.h (read_barrier): New functions for 32 and 64 bit
- Sparc.
- (write_barrier): Likewise.
-
-2007-01-27 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (getAllClassMethods): Move error handling to ...
- (throw_jvmti_error): ... here.
- (jdwpClassPrepareCB): New function.
- (jdwpThreadEndCB): New function.
- (jdwpThreadStartCB): New function.
- (jdwpVMDeathCB): New function.
- (jdwpVMInitCB): Define and enable callbacks for
- ClassPrepare, ThreadEnd, ThreadStart, and VMDeath.
-
-2007-01-27 Jakub Jelinek <jakub@redhat.com>
-
- * Makefile.am (generic_header_files): Add $(inner_nat_headers).
- * testsuite/Makefile.am (check-dejaGNU): Depend on compile-tests.
- (MYGCJH): New variable.
- (compile-tests): New goal.
- * Makefile.in: Rebuilt.
- * testsuite/Makefile.in: Rebuilt.
-
-2007-01-26 Andrew Haley <aph@redhat.com>
-
- * java/lang/natClass.cc (initializeClass): Re-throw
- SecurityExceptions.
- * java/lang/natVMClassLoader.cc (loadClass): checkPackageAccess.
- * java/lang/ClassLoader.java: (loadClass): Likewise.
-
-2007-01-26 Tom Tromey <tromey@redhat.com>
-
- * Updated headers.
-
-2007-01-25 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/29594:
- * gnu/gcj/convert/Convert.java (main): Correctly handle missing
- input or output encodings. Removed unused local variables.
-
-2007-01-25 Keith Seitz <keiths@redhat.com>
-
- * include/jvmti-int.h (_Jv_GetJDWP_JVMTIEnv): Declare.
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (_Jv_GetJDWP_JVMTIEnv): New function.
- * gnu/classpath/jdwp/natVMMethod.cc (getName): Implement.
- (getSignature): Implement.
- (getModifiers): Implement.
-
-2007-01-25 Andrew Haley <aph@redhat.com>
-
- * configure, Makefile.in, include/config.h.in: Rebuilt.
- * Makefile.am (libgcj_la_LIBADD): Removed $(LIBMAGIC).
- * configure.ac: Don't check for libmagic.
- * java/net/natVMURLConnection.cc (p_magic_open, p_magic_load,
- p_magic_close, p_magic_buffer): New globals.
- (init): Look up 'magic' functions.
- (guessContentTypeFromBuffer): Updated.
-
-2007-01-25 Keith Seitz <keiths@redhat.com>
-
- * jvmti.cc (_Jv_JVMTI_GetMethodName): New function.
- (_Jv_JVMTI_Interface): Define GetMethodName.
- * testsuite/libjava.jvmti/getmethodname.java: New file.
- * testsuite/libjava.jvmti/natgetmethodname.cc: New file.
- * testsuite/libjava.jvmti/getmethodname.out: New file.
-
-2007-01-24 Kyle Galloway <kgallowa@redhat.com>
-
- * libjava/testsuite/libjava.jvmti/jvmti-interp.exp: New file.
- * libjava/testsuite/libjava.jvmti/interp: New folder.
- * libjava/testsuite/lib/libjava.exp (exec_gij): New Method.
-
-2007-01-24 Keith Seitz <keiths@redhat.com>
-
- * link.cc (_Jv_Linker::wait_for_state): Add JVMTI
- CLASS_PREPARE notification.
-
-2007-01-24 Keith Seitz <keiths@redhat.com>
-
- * interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h,
- gnu/gcj/jvmti/BreakpointManager.h, jvmti.h, and jvmti-int.h
- * interpret-run.cc: Implement insn_breakpoint.
-
-2007-01-24 Keith Seitz <keiths@redhat.com>
-
- * prims.cc (_Jv_RunMain): Send JVMTI event notifications
- for VM_INIT and VM_DEATH instead of the JDWP notifications.
-
-2007-01-24 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (getAllClassMethods): Implement.
-
-2007-01-24 Andrew Haley <aph@redhat.com>
-
- * gnu/classpath/natVMStackWalker.cc: Call InitClass everywhere.
- (getClassContext) Add a barrier to prevent GetStackWalkerStack()
- from being sibcalled.
-
-2007-01-24 Andrew Haley <aph@redhat.com>
-
- * scripts/makemake.tcl (emit_bc_rule): Set the source filename.
- * sources.am: Rebuild.
-
-2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
-
- * exception.cc (parse_lsda_header, PERSONALITY_FUNCTION): Replaced
- _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.
-
-2007-01-23 H.J. Lu <hongjiu.lu@intel.com>
-
- PR libgcj/30550
- * Makefile.am (ecjx_DEPENDENCIES): Add libgcj_bc.la if needed.
- * Makefile.in: Regenerated.
-
-2007-01-22 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc
- (getClassMethod): Implement.
-
-2007-01-22 Keith Seitz <keiths@redhat.com>
-
- * java/lang/Class.h (_Jv_GetClassStatus): Declare.
- * java/lang/natClass.cc (_Jv_GetClassStatus): New function.
- * jvmti.cc (_Jv_JVMTI_GetClassStatus): New function.
- (_Jv_JVMTI_Interface): Define GetClassStatus.
-
-2007-01-22 Tom Tromey <tromey@redhat.com>
-
- * configure: Rebuilt.
- * configure.ac (GCJ): Reverted patch of 2006-12-20.
-
-2007-01-22 Tom Tromey <tromey@redhat.com>
-
- PR java/29812:
- * testsuite/libjava.jni/pr29812.java: New file.
- * testsuite/libjava.jni/pr29812_injar.java: New file.
- * testsuite/libjava.jni/pr29812_injar.jar: New file.
- * testsuite/libjava.jni/pr29812.out: New file.
- * testsuite/libjava.jni/pr29812_injar.c: New file.
- * testsuite/libjava.jni/pr29812_injar.h: New file.
- * testsuite/libjava.jni/pr29812.jar: New file.
- * testsuite/libjava.jni/pr29812.c: New file.
- * testsuite/libjava.jni/pr29812.h: New file.
- * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation):
- New proc.
- (gcj_jni_invocation_test_one): Use it.
- (gcj_jni_pr29812): New proc.
- (gcj_jni_run): Use it.
- * java/lang/natRuntime.cc (_load): Push a new system frame before
- calling JNI_OnLoad.
- * include/jvm.h (_Jv_JNI_PopSystemFrame): Declare.
- (_Jv_GetJNIEnvNewFrameWithLoader): Likewise.
- * jni.cc (struct _Jv_JNI_LocalFrame) <marker>: Now unsigned char.
- <allocated_p>: Now bool.
- <loader>: New field.
- (_Jv_JNI_EnsureLocalCapacity): Updated.
- (_Jv_JNI_NewLocalRef): Likewise.
- (_Jv_JNI_NewLocalRef): Likewise.
- (_Jv_JNI_PopLocalFrame): Likewise.
- (_Jv_JNI_FindClass): Likewise.
- (_Jv_GetJNIEnvNewFrame): Likewise.
- (_Jv_JNI_AttachCurrentThread): Likewise.
- (_Jv_GetJNIEnvNewFrameWithLoader): New function.
- (_Jv_GetJNIEnvNewFrame): Use it.
- * include/jni_md.h (_CLASSPATH_JNIENV_CONTENTS): Removed 'klass'.
-
-2007-01-22 Tom Tromey <tromey@redhat.com>
-
- * libtool-version: Bump current to 9.
-
-2007-01-22 Andrew Haley <aph@redhat.com>
-
- * sysdep/alpha/locks.h (write_barrier): New.
-
-2007-01-21 Matthias Klose <doko@debian.org>
-
- * Makefile.am (install-exec-hook): Use transformed name.
- * Makefile.in: Regenerate.
-
-2007-01-19 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc: Mark unused parameters
- in methods and reformat.
-
- * gnu/classpath/jdwp/natVMFrame.cc: Mark unused parameters with
- MAYBE_UNUSED.
-
-2007-01-18 Keith Seitz <keiths@redhat.com>
-
- From Macro Trudel <mtrudel@gmx.ch>:
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (jdwpVMInitCB):
- Use JNICALL.
-
-2007-01-18 Marco Trudel <mtrudel@gmx.ch>
-
- * jni.cc (_Jv_JNI_FindClass): Initialize class.
- * testsuite/libjava.jni/findclass2.jar: New file.
- * testsuite/libjava.jni/findclass2.h: New file.
- * testsuite/libjava.jni/findclass2.java: New file
- * testsuite/libjava.jni/findclass2.c: New file.
- * testsuite/libjava.jni/findclass2.out: New file.
-
-2007-01-18 Tom Tromey <tromey@redhat.com>
-
- * configure: Rebuilt.
- * configure.ac: Use multi_basedir instead of libgcj_basedir.
-
-2007-01-18 Gary Benson <gbenson@redhat.com>
-
- * gnu/java/nio/natVMPipeEcos.cc:
- Renamed from gnu/java/nio/natPipeImplEcos.cc.
- * gnu/java/nio/natVMPipePosix.cc:
- Renamed from gnu/java/nio/natPipeImplPosix.cc.
- * gnu/java/nio/natVMPipeWin32.cc:
- Renamed from gnu/java/nio/natPipeImplWin32.cc.
- * gnu/java/nio/natVMSelectorEcos.cc:
- Renamed from gnu/java/nio/natSelectorImplEcos.cc.
- * gnu/java/nio/natVMSelectorPosix.cc:
- Renamed from gnu/java/nio/natSelectorImplPosix.cc.
- * gnu/java/nio/natVMSelectorWin32.cc:
- Renamed from gnu/java/nio/natSelectorImplWin32.cc.
- * java/io/natVMObjectInputStream.cc:
- Renamed from java/io/natObjectInputStream.cc.
- * java/lang/natVMDouble.cc:
- Renamed from java/lang/natDouble.cc.
- * java/lang/natVMFloat.cc:
- Renamed from java/lang/natFloat.cc.
- * Makefile.am, configure.ac: Reflect the above.
- * Makefile.in, configure: Rebuilt.
-
-2007-01-17 Andrew Haley <aph@redhat.com>
-
- * Makefile.in: Rebuilt.
- * Makefile.am (ecjx_LDFLAGS): Pass -fbootclasspath.
-
-2007-01-17 Keith Seitz <keiths@redhat.com>
-
- * java/lang/natThread.cc (finish_): Add JVMTI ThreadEnd notification.
- (_Jv_NotifyThreadStart): Add JVMTI ThreadStart notification.
-
-2007-01-16 Jack Howarth <howarth@bromo.med.uc.edu>
-
- * configure.ac: Use multi.m4 from aclocal rather than custom
- code. Use multi_basedir instead libgcj_basedir. Test for
- /proc/self/exe when not cross-compiling.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * Makefile.in: Regenerate.
-
-2007-01-17 Gary Benson <gbenson@redhat.com>
-
- * java/nio/natVMDirectByteBufferImpl.cc:
- Renamed from java/nio/natDirectByteBufferImpl.cc.
- * Makefile.am: Reflect the above.
- * Makefile.in: Rebuilt.
-
-2007-01-17 Marco Trudel <mtrudel@gmx.ch>
-
- * jvmti.cc (_Jv_JVMTI_GetAllThreads): Now static. Use JNICALL.
- Fixed indentation. Removed unused variable.
-
-2007-01-16 Tom Tromey <tromey@redhat.com>
-
- * java/lang/natThread.cc (finalize_native): Remove cast.
- (_Jv_GetCurrentJNIEnv): Likewise.
- * include/jvm.h (struct natThread) <jni_env>: Declare as
- _Jv_JNIEnv*.
-
-2007-01-16 Keith Seitz <keiths@redhat.com>
-
- * testsuite/libjava.jvmti/natevents.cc (FieldModificationCB): Use
- %#llx instead of %d for new_value.
- * testsuite/libjava.jvmti/events.out: Update expected output.
- * testsuite/libjava.jvmti/events.jar: Regenerate.
-
-2007-01-16 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK):
- New macro.
- (ENABLE_EVENT): New macro.
- (initialize): Define and enable JVMTI VM_INIT callback.
- (jdwpVMInitCB): New function.
-
-2007-01-16 Kyle Galloway <kgallowa@redhat.com>
-
- * jvmti.cc (_Jv_JVMTI_GetAllThreads): New function.
- * testsuite/libjava.jvmti/getallthreads.java: New test.
- * testsuite/libjava.jvmti/natgetallthreads.cc: Ditto.
- * testsuite/libjava.jvmti/getallthreads.out: Ditto.
- * testsuite/libjava.jvmti/getallthreads.h: Ditto.
- * testsuite/libjava.jvmti/getallthreads.jar: Ditto.
-
-2007-01-15 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/natVMVirtualMachine.cc (suspendThread): Use
- java.lang.StringBuilder instead of java.lang.StringBuffer.
- (resumeThread): Likewise.
-
-2007-01-15 Gary Benson <gbenson@redhat.com>
-
- * java/nio/MappedByteBuffer.java: Removed.
- * sources.am, Makefile.in: Rebuilt.
-
-2007-01-15 Gary Benson <gbenson@redhat.com>
-
- * java/net/URLClassLoader.java: Removed.
- * gnu/java/net/loader/Load_gcjlib.java: New file.
- * gnu/gcj/runtime/BootClassLoader.java: Ensure core
- URL handler is present in static executables.
- * sources.am, Makefile.in: Rebuilt.
-
-2007-01-14 H.J. Lu <hongjiu.lu@intel.com>
-
- * Makefile.am (libgcj_la_LDFLAGS): Add
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS).
- (libgcj_tools_la_LDFLAGS): Likewise.
- (libgcj_bc_la_LDFLAGS): Likewise.
- * Makefile.in: Regenerated.
-
- * configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
- LIBGCJ_LD_SYMBOLIC_FUNCTIONS to $SYMBOLIC_LDFLAGS. Set
- libgcj_ld_symbolic to $SYMBOLIC_LDFLAGS if it isn't set.
- Substitute LIBGCJ_LD_SYMBOLIC_FUNCTIONS.
- * configure: Regenerated.
- * aclocal.m4: Likewise.
- * gcj/Makefile.in: Likewise.
- * include/Makefile.in: Likewise.
- * testsuite/Makefile.in: Likewise.
-
-2007-01-12 Kaz Kojima <kkojima@gcc.gnu.org>
-
- * sysdep/sh/locks.h (read_barrier): New.
- (write_barrier): Likewise.
-
-2007-01-12 Andrew Haley <aph@redhat.com>
-
- * include/i386-signal.h: Rewrite to use rt_sigaction.
-
-2007-01-11 Andrew Haley <aph@redhat.com>
-
- * prims.cc (jdwpOptions) Fix deprecated cast from char[] constant
- to char*.
- * include/x86_64-signal.h (HANDLE_DIVIDE_OVERFLOW): Rewrite to fix
- aliasing violation.
-
-2007-01-10 Tom Tromey <tromey@redhat.com>
-
- * gnu/gcj/xlib/*.h: New files.
- * gnu/awt/xlib/*.h: Likewise.
- * classpath/lib/gnu/gcj/xlib: New class files.
- * classpath/lib/gnu/awt/xlib: Likewise.
-
-2007-01-10 Tom Tromey <tromey@redhat.com>
-
- * HACKING: Various updates.
-
-2007-01-10 Tom Tromey <tromey@redhat.com>
-
- * java/lang/natDouble.cc (toString): Added parens.
- * gnu/gcj/io/shs.h (PROTO): Define.
- * link.cc (resolve_pool_entry): Added missing braces.
-
-2007-01-10 H.J. Lu <hongjiu.lu@intel.com>
-
- PR libgcj/30424
- * sysdep/ia64/locks.h (read_barrier): New.
- (write_barrier): New.
-
-2007-01-10 Gary Benson <gbenson@redhat.com>
-
- * java/net/URL.java: Removed.
- * sources.am, Makefile.in: Rebuilt.
-
-2007-01-10 Matthias Klose <doko@debian.org>
-
- * Makefile.am (install-exec-hook): Support $(DESTDIR).
- * Makefile.in: Regenerated.
-
-2007-01-05 Tom Tromey <tromey@redhat.com>
-
- * testsuite/libjava.loader/loader.exp (gcj_loader_run): Find
- dummy.class in srcdir.
-
-2007-01-03 Tom Tromey <tromey@redhat.com>
-
- * testsuite/libjava.cni/cni.exp (gcj_cni_compile_cxx_to_o): Add -I
- for srcdir.
-
-2007-01-03 Tom Tromey <tromey@redhat.com>
-
- * testsuite/*: Added many .jar and .h files.
- * testsuite/libjava.special/special.exp
- (gcj_special_try_compiler): New proc.
- * testsuite/libjava.loader/loader.exp (gcj_loader_run): Don't
- bytecompile source. Search for .jar files.
- (gcj_loader_test_one): Don't look for MyLoader.java.
- * testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_test_one): Don't
- bytecompile sources or build headers.
- (gcj_jvmti_run): Look for .jar files.
- * testsuite/libjava.jni/jni.exp (gcj_jni_run): Compile .jar
- files.
- (gcj_jni_test_one): Don't bytecompile sources or build headers.
- Set classpath when invoking gij.
- (gcj_jni_invocation_test_one): Likewise.
- * testsuite/libjava.cni/cni.exp (gcj_cni_test_one): Don't build
- headers or bytecompile sources.
- (gcj_cni_run): Use .jar files, not .java files.
- * testsuite/libjava.lang/lang.exp: Compile .jar files.
-
-2007-01-02 Tom Tromey <tromey@redhat.com>
-
- * configure: Rebuilt.
- * configure.ac: Check for gjar.
-
-2007-01-02 Tom Tromey <tromey@redhat.com>
-
- * testsuite/libjava.jacks/jacks.exp: Removed.
- * testsuite/libjava.jacks/jacks.xfail: Removed.
-
--- /dev/null
+2007-12-22 David Daney <ddaney@avtrex.com>
+
+ * scripts/makemake.tcl (emit_bc_rule): Use $(LIBGCJ_BC_FLAGS)
+ instead of -findirect-dispatch -fno-indirect-classes.
+ * configure.ac (libgcj-bc): New AC_ARG_ENABLE.
+ (SUPPRESS_LIBGCJ_BC): New AM_CONDITIONAL.
+ * Makefile.am (LIBGCJ_BC_FLAGS): New variable.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Same.
+ * testsuite/Makefile.in: Same.
+ * configure: Same.
+ * gcj/Makefile.in: Same.
+ * sources.am: Same.
+
+2007-12-17 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/Makefile.am (compile-tests): Build
+ libjava.jvmti/interp/*.h with -jni rather than -cni.
+ * testsuite/Makefile.in: Rebuilt.
+
+2007-12-08 Andreas Tobler <a.tobler@schweiz.org>
+
+ * configure.host: Add bits for i?86-*-darwin9 and x86_64-*-darwin9.
+ * configure.ac: Add darwin-signal.h to x86_64-*-darwin9 and
+ i?86-*darwin9.
+ * configure.in: Regenerate.
+ * darwin.cc: Add definitions for Darwin specific functions for 64-bit.
+ (darwin_java_register_dyld_add_image_hook): Use this specific
+ functions.
+ * Makefile.am (gij_LDFLAGS): Add extra_gij_ldflags for Darwin9.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Likewise.
+ * gcj/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+ * testsuite/lib/libjava.exp (libjava_arguments): Add allow_stack_execute
+ for *-*-darwin9*.
+
+2007-12-06 David Daney <ddaney@avtrex.com>
+
+ * interpret.cc: Replace ffi_raw with INTERP_FFI_RAW_TYPE throughout.
+ (ncode_closure, ffi_closure_fun): Define versions for
+ non-FFI_NATIVE_RAW_API case.
+ * include/java-interp.h (INTERP_FFI_RAW_TYPE): Define and use to
+ replace ffi_raw throughout.
+ * jni.cc, interpret-run.cc: Replace ffi_raw with INTERP_FFI_RAW_TYPE
+ throughout.
+
+2007-12-06 Andreas Tobler <a.tobler@schweiz.org>
+
+ * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation): Make
+ the testsuite multilib aware for Darwin.
+
+2007-12-05 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.h: Regenerate.
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.h: Likewise.
+ * java/awt/Component.h: Likewise.
+ * java/awt/Container.h: Likewise.
+
+2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure.ac: Don't run config-ml.in directly.
+ (multilib_arg): New.
+ * configure: Regenerated.
+
+2007-10-22 David Daney <ddaney@avtrex.com>
+
+ * include/jvm.h (_Jv_SetGCFreeSpaceDivisor): Declare new function.
+ * boehm.cc (_Jv_SetGCFreeSpaceDivisor): Define it.
+
+2007-10-18 David Daney <ddaney@avtrex.com>
+
+ * classpath/lib/gnu/java/locale/LocaleData.class: Regenerate
+ * classpath/lib/gnu/javax/sound/sampled/gstreamer: Add generated
+ files.
+ * gnu/javax/sound/sampled/gstreamer: Add generated files.
+
+2007-10-15 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * configure: Regenerate following changes to ../config/tls.m4.
+
+2007-09-17 Tom Tromey <tromey@redhat.com>
+
+ * defineclass.cc (MAJOR_1_6): New define.
+ (MINOR_1_6): Likewise.
+ (_Jv_ClassReader::parse): Handle 1.6 bytecode.
+
+2007-09-12 David Daney <ddaney@avtrex.com>
+
+ * configure.host: Enable interpreter for mips64. Enable hash
+ synchronization for all mips*-*-linux* targets.
+ * sysdep/mips/locks.h (compare_and_swap, compare_and_swap_release) Use
+ __sync_bool_compare_and_swap instead of in-line asm.
+ (release_set, read_barrier, write_barrier): Use __sync_synchronize
+ instead of in-line asm.
+
+2007-09-09 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR libgcj/33326
+ * testsuite/lib/libjava.exp (libjava_arguments): Append the test spec
+ only for linux targets.
+
+2007-09-09 Andrew Haley <aph@redhat.com>
+
+ * interpret-run.cc (invokevirtual_resolved): Nullcheck object on
+ TOS.
+
+2007-09-06 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libjava.lang/StackTrace2.jar: Rebuilt.
+ * testsuite/libjava.lang/StackTrace2.java (checkLine): Print file
+ name.
+
+2007-09-06 Roman Zippel <zippel@linux-m68k.org>
+
+ * sysdep/m68k/locks.h: New file.
+ * configure.host: Set sysdeps_dir and libgcj_interpreter for m68k.
+ * configure.ac: Set SIGNAL_HANDLER for m68*-*-linux*.
+ * configure: Regenerate.
+
+2007-09-05 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * configure.host(gnu*): Set use_libgcj_bc to yes.
+
+2007-09-04 Matthias Klose <doko@ubuntu.com>
+
+ * configure.ac: Do not pass --with-native-libdir to classpath.
+ * configure: Regenerate.
+
+2007-09-04 Matthias Klose <doko@ubuntu.com>
+
+ PR libgcj/33278
+ * configure.ac: Robustify extraction of gcj version.
+ * configure: Regenerate.
+
+2007-09-04 Andrew Haley <aph@redhat.com>
+
+ PR java/27908
+ * testsuite/libjava.lang/PR27908.java
+ ({run1,run2,run3}.isRunning): New Method.
+ (main): Fix race condition.
+
+2007-08-29 Andrew Haley <aph@redhat.com>
+
+ * gnu/classpath/natVMStackWalker.cc (VMStackWalker::getCallingClass):
+ Make sure we're not sibcalled.
+ (GET_CALLING_CLASS): Define for ARM EABI.
+
+2007-08-22 Andrew Haley <aph@redhat.com>
+
+ * configure.host (BACKTRACESPEC): Add arm*-linux*.
+
+2007-08-22 Andrew Haley <aph@redhat.com>
+
+ * configure.ac (LIBSTDCXXSPEC): New.
+ * configure.host: Add arm*-linux* to pthread test.
+ * configure.ac (LIBGCJTESTSPEC): Add path to libstdc++ for ARM
+ EABI.
+ * testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Use
+ -fexceptions for ARM EABI.
+ * testsuite/lib/libjava.exp (libjava_arguments): Add libgcj-test.spec.
+ (libjava_invoke): Log the invocation.
+
+2007-08-15 Andrew Haley <aph@redhat.com>
+
+ * configure.ac (extra_ldflags): Define.
+ * Makefile.am: Use extra_ldflags for all executables.
+
+2007-08-14 Andrew Haley <aph@redhat.com>
+
+ * sysdep/arm/backtrace.h: Remove stubs for _Unwind_GetIPInfo,
+ _Unwind_GetRegionStart, and _Unwind_Backtrace.
+
+2007-07-27 Andrew Haley <aph@redhat.com>
+
+ * gnu/classpath/natVMStackWalker.cc (GET_CALLING_CLASS): Stub for
+ ARM EABI.
+ * exception.cc (get_exception_header_from_ue): New.
+ (get_ttype_entry): ARM EABI version.
+ (PERSONALITY_FUNCTION): Add ARM EABI code.
+ * sysdep/arm/backtrace.h: New file.
+ * stacktrace.cc (_URC_NORMAL_STOP): New.
+ * configure.ac (extra_ldflags_libjava): Add libsupc++.la for ARM
+ EABI.
+ * configure.host (BACKTRACESPEC): Add arm/backtrace.h.
+
+2007-08-31 Matthias Klose <doko@ubuntu.com>
+
+ * classpath/lib/java/util/EnumSet*.class: Regenerate
+
+2007-08-30 Andreas Tobler <a.tobler@schweiz.org>
+
+ * gij.cc (version): Update Copyright year.
+
+2007-08-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * configure.host (gnu*): Set use_libgcj_bc to yes.
+
+2007-08-15 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/Class.java (internalGetFields): Use LinkedHashSet.
+ * classpath/lib/java/lang/Class.class: Rebuilt.
+
+2007-08-15 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * java/lang/natPosixProcess.cc (sigchld_handler) [!SA_SIGINFO]: Remove
+ 'si' and 'third' parameters. Disable calling
+ pmi->old_sigaction.sa_sigaction.
+ (java::lang::PosixProcess*ProcessManager::init) [!SA_SIGINFO]: Set
+ sa.sa_handler instead of sa.sa_sigaction, don't set SA_SIGINFO flag.
+
+2007-08-09 Andrew Haley <aph@redhat.com>
+
+ * testsuite/lib/libjava.exp (libjava_invoke): Log the invocation.
+
+2007-08-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * java/net/natVMInetAddressPosix.cc
+ (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]:
+ Allocate buffer dynamically.
+
+2007-08-04 Alfred M. Szmidt <ams@gnu.org>
+
+ * java/io/natFilePosix.cc (init_native) [!MAXPATHLEN]: Define to 0.
+ * java/io/File.java (createTempFile): Don't truncate if the system
+ doesn't have a limit on the length of a file name.
+ * classpath/lib/java/io/File.class: Regenerate.
+
+2007-08-04 Matthias Klose <doko@ubuntu.com>
+
+ Import GNU Classpath (libgcj-import-20070727).
+
+ * Regenerate class and header files.
+ * Regenerate auto* files.
+
+ * include/jvm.h:
+ * jni-libjvm.cc (Jv_JNI_InvokeFunctions): Rename type.
+ * jni.cc (_Jv_JNIFunctions, _Jv_JNI_InvokeFunctions): Likewise.
+ * jni.cc (_Jv_JNI_CallAnyMethodA, _Jv_JNI_CallAnyVoidMethodA,
+ _Jv_JNI_CallMethodA, _Jv_JNI_CallVoidMethodA,
+ _Jv_JNI_CallStaticMethodA, _Jv_JNI_CallStaticVoidMethodA,
+ _Jv_JNI_NewObjectA, _Jv_JNI_SetPrimitiveArrayRegion): Constify
+ jvalue parameter.
+ * java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise.
+
+ * java/lang/VMFloat.java (toString, parseFloat): New.
+
+ * gnu/awt/xlib/XToolkit.java (setAlwaysOnTop, isModalityTypeSupported,
+ isModalExclusionTypeSupported): New (stub only).
+ * gnu/awt/xlib/XCanvasPeer.java (requestFocus): Likewise.
+ * gnu/awt/xlib/XFramePeer.java (updateMinimumSize, updateIconImages,
+ updateFocusableWindowState, setModalBlocked, getBoundsPrivate,
+ setAlwaysOnTop): Likewise.
+ * gnu/awt/xlib/XFontPeer.java (canDisplay): Update signature.
+
+ * scripts/makemake.tcl: Ignore gnu/javax/sound/sampled/gstreamer,
+ ignore javax.sound.sampled.spi.MixerProvider, ignore .in files.
+
+ * HACKING: Mention --enable-gstreamer-peer, removal of generated files.
+
+2007-07-31 David Daney <ddaney@avtrex.com>
+
+ * HACKING: Document regenerating configure and aclocal.m4.
+
+2007-07-31 David Daney <ddaney@avtrex.com>
+
+ * configure.ac (INTERPRETER): New AM_CONDITIONAL.
+ * scripts/makemake.tcl (package_map): Mark jdwp and jvmti packages
+ as being for interpreter only. Place interpreter related files in
+ 'if INTERPRETER' block.
+ (interpreter_package_files): New list.
+ (interpreter_header_vars): Ditto.
+ (emit_package_rule_to_list): Renamed from emit_package_rule with
+ new target list parameter.
+ (emit_package_rule): Rewritten to call emit_package_rule_to_list.
+ (emit_interpreter_rule): New function.
+ (emit_source_var): Place interpreter related files in
+ interpreter_header_vars.
+ * Makefile.am (ACLOCAL_AMFLAGS): Add -I libltdl.
+ (libgcj_interpret_source_files): New variable.
+ (libgcj_la_SOURCES): Move jvmti.cc and interpret.cc to
+ libgcj_interpret_source_files and include
+ libgcj_interpret_source_files.
+ (nat_jdwp_source_files): New variable.
+ (nat_jvmti_source_files): Ditto.
+ (nat_source_files): Move jdwp and jvmti related files to
+ nat_jdwp_source_files and nat_jvmti_source_files and include
+ nat_jdwp_source_files and nat_jvmti_source_files.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Ditto.
+ * testsuite/Makefile.in: Ditto.
+ * gcj/Makefile.in: Ditto.
+ * sources.am: Ditto.
+ * configure: Ditto.
+ * include/config.h.in: Ditto.
+ * interpret.cc: Remove #ifdef INTERPRETER block.
+ * stacktrace.cc (UnwindTraceFn): Do not handle proxy frames if
+ interpreter disabled.
+ * include/java-interp.h (_Jv_FrameType): Move outside of
+ #ifdef INTERPRETER block.
+ * include/execution.h (_Jv_IndirectCompiledEngine::do_get_closure_list,
+ _Jv_InterpreterEngine, _Jv_soleInterpreterEngine): Place in
+ #ifdef INTERPRETER block.
+ * jni.cc (jvmti.h, jvmti-int.h): Only include if INTERPRETER is
+ defined.
+ (_Jv_JNI_PopSystemFrame, _Jv_JNI_GetEnv): Only do jvmti processing
+ if INTERPRETER is defined.
+ * prims.cc (jvmti.h, jvmti-int.h, Jdwp.h, VMVirtualMachine.h): Only
+ include if INTERPRETER is defined.
+ (defaultJdwpOptions, jdwpOptions, jvmti_agent_onload_func,
+ jvmti_agent_onunload_func, jvmti_agentonload, jvmti_agentonunload,
+ jvmti_agent_opts, load_jvmti_agent): Only define if INTERPRETER is
+ defined.
+ (parse_x_arg): Only process 'runjdwp:' if INTERPRETER is defined.
+ (parse_init_args): Only process jvmti related options if
+ INTERPRETER is defined.
+ (_Jv_CreateJavaVM): Only call _Jv_JVMTI_Init if INTERPRETER is
+ defined.
+ (_Jv_RunMain): Only do jvmti and jdwp processing if INTERPRETER is
+ defined.
+ * link.cc (jvmti.h, jvmti-int.h): Only include if INTERPRETER is
+ defined.
+ (_Jv_ThrowNoClassDefFoundError, _Jv_Linker::create_error_method):
+ Define if if INTERPRETER is not defined.
+ (_Jv_Linker::wait_for_state): Only do jvmti proccessing if
+ INTERPRETER is defined.
+ * boehm.cc (closure_list_pointer, finalize_closure_list,
+ _Jv_ClosureListFinalizer): Only define if INTERPRETER is
+ defined.
+ * java/lang/natThread.cc (jvmti.h, jvmti-int.h): Only include if
+ INTERPRETER is defined.
+ (finish_, _Jv_NotifyThreadStart): Only do jvmti proccessing if
+ INTERPRETER is defined.
+ * java/lang/Class.h (_Jv_InterpreterEngine): Move declaration
+ and friend declaration inside #ifdef INTERPRETER block.
+ * java/lang/natClass.cc (_Jv_ClosureList::releaseClosures,
+ _Jv_ClosureList::registerClosure, _Jv_GetInterpClassSourceFile):
+ Only define if INTERPRETER is defined.
+ * java/lang/reflect/natVMProxy.cc (UnsupportedOperationException.h):
+ Include.
+ (generateProxyClass): Throw UnsupportedOperationException unless
+ INTERPRETER is defined.
+
+2007-07-29 Matthias Klose <doko@ubuntu.com>
+
+ * HACKING: Document regenerating configure.
+
+2007-07-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libgcj/32929
+ * aclocal.m4: Regenerated.
+ * configure: Likewise.
+
+2007-07-28 Matthias Klose <doko@ubuntu.com>
+
+ * configure.ac: Encode the libgcj soversion in dbexecdir,
+ pass --with-native-libdir to classpath configure.
+ * configure: Regenerate.
+
+2007-07-28 Matthias Klose <doko@ubuntu.com>
+
+ * classpath/jvmti.h: Remove.
+
+2007-07-27 Tom Tromey <tromey@redhat.com>
+
+ * Rebuild .class files with new ecj.
+
+2007-07-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.ac (mips-sgi-irix6*): Override SYSTEMSPEC.
+ * configure: Regenerate.
+
+2007-07-16 Rask Ingemann Lambertsen <rask@sygehus.dk>
+
+ PR target/32340
+ * configure.host (arm*-elf | strongarm*-elf | xscale*-elf): Use the
+ new sysdeps/arm directory.
+
+2007-07-15 Tom Tromey <tromey@redhat.com>
+
+ * java/io/File.java: Implement Comparable<File>.
+ (compareTo): Removed.
+ * java/io/File.h: Rebuilt.
+ * classpath/lib/java/io/File.class: Rebuilt.
+
+2007-07-14 Tom Tromey <tromey@redhat.com>
+
+ * Rebuilt .class files.
+
+2007-07-15 Andrew Haley <aph@redhat.com>
+
+ * configure.host:
+ arm*-linux-gnu -> arm*-linux*.
+
+2007-07-14 Krister Walfridsson <cato@df.lth.se>
+
+ * gnu/gcj/util/natGCInfo.cc: Use HAVE_STRERROR_R.
+ * configure.ac: Remove check for strerror, add check for strerror_r.
+ * configure: Regenerate.
+ * include/config.h.in: Regenerate.
+
+2007-07-13 Andrew Haley <aph@redhat.com>
+
+ * libgcj.ver: Add __gcj_personality_sj0.
+
+ * testsuite/libjava.jvmti/jvmti-interp.exp: Likewise.
+ * testsuite/libjava.jni/jni.exp: Use -fdollars-in-identifiers.
+ * testsuite/libjava.jni/cni.exp: Use -fdollars-in-identifiers.
+ * testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_compile_cxx_to_o): Likewise.
+
+ * gnu/classpath/natVMStackWalker.cc (getCallingClassLoader): Check
+ klass is non-null.
+ * java/lang/reflect/natField.cc (getAddr): Call
+ _Jv_StackTrace::GetCallingClass only if CALLER is non-null.
+ * java/lang/reflect/natVMProxy.cc (run_proxy): Use
+ _Jv_getFieldInternal to get field proxyClass.m.
+ (_Jv_getFieldInternal): New function.
+
+2007-07-11 Andrew Haley <aph@redhat.com>
+
+ * configure.host (arm*-linux-gnu): New.
+ * sysdep/arm/locks.h: New.
+
+2007-07-13 Roger Sayle <roger@eyesopen.com>
+
+ * java/lang/natPosixProcess.cc: Include <sys/time.h> before
+ <sys/resource.h> to restore bootstrap on powerpc-apple-darwin7.9.0.
+
+2007-07-12 Matthias Klose <doko@ubuntu.com>
+
+ * gnu/classpath/jdwp/util/MethodResult.h,
+ gnu/classpath/jdwp/value/ObjectValue.h: Regenerate.
+
+2007-07-11 Keith Seitz <keiths@redhat.com>
+
+ * interpret.cc (get_local_var_table) [DIRECT_THREADED]: Make sure the
+ method is compiled.
+ * testsuite/libjava.jvmti/interp/getlocalvartable.out: Revise
+ for compiled methods.
+
+2007-07-10 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR libgcj/32651
+ * configure.host (mips-sgi-irix6*): Set sysdeps_dir.
+ Disable interpreter.
+
+2007-07-05 Andreas Tobler <a.tobler@schweiz.org>
+
+ * java/lang/natPosixProcess.cc: Reorder includes to fix compilation
+ on hppa2.0w-hp-hpux11.11.
+ Remove include of <gcj/cni.h>.
+
+2007-07-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * aclocal.m4: Regenerated.
+
+2007-07-03 Andreas Tobler <a.tobler@schweiz.org>
+
+ * java/lang/Class.h: Remove redundant 'class java::*::* declarations.
+
+2007-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR libgcj/30513
+ * configure.host (i[3-6]86-*): Undef sun.
+
+2007-06-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one):
+ Fix a typo.
+
+2007-06-28 Jan Nijtmans <nijtmans@users.sourceforge.net>
+
+ PR libgcj/30999:
+ * jni_md.h: Add the possibility to compile jni code with.
+ -fvisibility=hidden. This causes all symbols to be hidden
+ except the JNI functions which need to be exported.
+
+2007-06-28 Andreas Tobler <a.tobler@schweiz.org>
+
+ * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one): Pass
+ the cxxldlibflags to exec_gij to have the right libstdc++ invoked.
+
+2007-07-21 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/VMVirtualMachine.h: Regenerate.
+
+2007-07-20 Keith Seitz <keiths@redhat.com>
+
+ * classpath/lib/gnu/classpath/jdwp/value/StringValue.class:
+ Regenerate.
+
+2007-07-20 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/VMVirtualMachine.java (executeMethod):
+ Update from reference implementation.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (executeMethod):
+ Update parameter list to match new VMVirtualMachine interface.
+ * classpath/lib/gnu/classpath/jdwp/processor/ClassTypeCommandSet.class:
+ Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/processor/
+ ObjectReferenceCommandSet.class: Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/value/ObjectValue.class: Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class: Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/util/MethodResult.class: Regenerate.
+
+2007-06-18 Keith Seitz <keiths@redhat.com>
+
+ * gnu/gcj/jvmti/Breakpoint.java: Make abstract.
+ (method): Change from private to protected.
+ (location): Likewise.
+ (Breakpoint): Change argument list to take only integer type.
+ Add default constructor.
+ (initialize_native): Renamed to ...
+ (_save_insn): ... this to make function more explicit.
+ (execute): New method.
+ * gnu/gcj/jvmti/Breakpoint.h: Regenerate.
+ * gnu/gcj/jvmti/natBreakpoint.cc (initialize_native): Rename to...
+ (_save_insn): ... this.
+ (install): Save the original instruction.
+ * gnu/gcj/jvmti/NormalBreakpoint.java: New file.
+ * gnu/gcj/jvmti/NormalBreakpoint.h: New file.
+ * gnu/gcj/jvmti/natNormalBreakpoint.cc: New file.
+ * gnu/gcj/jvmti/BreakpointManager.java (newBreakpoint):
+ Instantiate a NormalBreakpoint instead of Breakpoint.
+ * interpret-run.cc (insn_breakpoint): Remove breakpoint actions
+ and call Breakpoint.execute to do them.
+ * classpath/lib/gnu/gcj/jvmti/Breakpoint.class: Regenerate.
+ * classpath/lib/gnu/gcj/jvmti/BreakpointManager.class: Likewise.
+ * classpath/lib/gnu/gcj/jvmti/NormalBreakpoint.class: New file.
+ * sources.am: Regenerate.
+ * Makefile.am (nat_source_files): Add natNormalBreakpoint.cc.
+ * Makefile.in: Regenerated.
+
+2007-06-14 Keith Seitz <keiths@redhat.com>
+
+ * include/java-interp.h (_Jv_LocalVarTableEntry): Add union
+ for bytecode_pc and direct-threaded pc.
+ Add field descriptions inline.
+ * defineclass.cc (read_one_code_attribute): Change from
+ bytecode_start_pc to bytecode_pc.
+ Remove unused variable "len".
+ * interpret.cc (compile): Remap the variable table, too.
+ (get_local_var_table) [DIRECT_THREADED]: Use insn_index on the
+ start location to map from pc_t to code index.
+
+2007-06-09 Keith Seitz <keiths@redhat.com>
+
+ * testsuite/libjava.jvmti/dummyagent.c (Agent_OnLoad):
+ Add missing return value.
+
+2007-06-03 Matthias Klose <doko@ubuntu.com>
+
+ * java/io/natFileWin32.cc (setFilePermissions): New (stub only).
+ _access: Handle EXEC query, stub only.
+
+2007-06-03 Matthias Klose <doko@ubuntu.com>
+
+ Merged from classpath:
+ * gnu/java/nio/SelectorProviderImpl.java: Whitespace merge.
+ * java/lang/System.java(inheritedChannel): New.
+ * java/lang/Character.java: Remove stray`;'.
+ * java/net/MulticastSocket.java: Merged.
+ * java/text/DateFormatSymbols.java(getInstance): New, comment updates.
+ * java/text/Collator.java(getInstance): Merged.
+ * java/util/Calendar.java: New attributes ALL_STYLES, SHORT, LONG.
+ getDisplayName, getDisplayNames: New.
+ * java/util/logging/Logger.java: Merged.
+ * Regenerate .class and .h files.
+
+2007-06-03 Matthias Klose <doko@ubuntu.com>
+
+ * java/io/File.java: Merge with classpath-0.95, new method
+ setFilePermissions, new attribute EXEC.
+ * java/io/natFilePosix.cc (setFilePermissions): New.
+ _access: Handle EXEC query.
+ * classpath/lib/java/io/File.class, java/io/File.h: Regenerate.
+
+2007-06-03 Matthias Klose <doko@ubuntu.com>
+
+ Imported GNU Classpath 0.95.
+
+ * classpath/Makefile.in,
+ classpath/native/jni/midi-dssi/Makefile.in,
+ classpath/native/jni/classpath/Makefile.in,
+ classpath/native/jni/Makefile.in,
+ classpath/native/jni/gconf-peer/Makefile.in,
+ classpath/native/jni/java-io/Makefile.in,
+ classpath/native/jni/native-lib/Makefile.in,
+ classpath/native/jni/java-util/Makefile.in,
+ classpath/native/jni/midi-alsa/Makefile.in,
+ classpath/native/jni/java-lang/Makefile.in,
+ classpath/native/jni/java-nio/Makefile.in,
+ classpath/native/jni/java-net/Makefile.in,
+ classpath/native/jni/xmlj/Makefile.in,
+ classpath/native/jni/qt-peer/Makefile.in,
+ classpath/native/jni/gtk-peer/Makefile.in,
+ classpath/native/Makefile.in, classpath/native/jawt/Makefile.in,
+ classpath/native/fdlibm/Makefile.in,
+ classpath/native/plugin/Makefile.in,
+ classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
+ classpath/tools/Makefile.in, classpath/doc/Makefile.in,
+ classpath/doc/api/Makefile.in, classpath/lib/Makefile.in,
+ classpath/external/Makefile.in, classpath/external/jsr166/Makefile.in,
+ classpath/external/sax/Makefile.in,
+ classpath/external/w3c_dom/Makefile.in,
+ classpath/external/relaxngDatatype/Makefile.in,
+ classpath/include/Makefile.in,
+ classpath/examples/Makefile.in: Regenerate.
+ * classpath/config.guess, classpath/config.sub,
+ classpath/ltmain.sh : Update.
+ * classpath/configure, classpath/depcomp, classpath/missing,
+ classpath/aclocal.m4, classpath/install-sh: Regenerate.
+
+ * gnu/classpath/Configuration.java (CLASSPATH_VERSION): Now 0.95.
+ * sources.am: Regenerate.
+ * Makefile.in: Regenerate.
+
+ * Update the .class files and generated CNI header files, add new
+ .class and generated CNI header files.
+ * Remove generated files for removed java source files:
+ classpath/gnu/java/net/BASE64.java,
+ classpath/gnu/java/security/util/Base64.java,
+ classpath/gnu/java/awt/peer/gtk/GThreadMutex.java,
+ classpath/gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
+ classpath/gnu/java/awt/font/autofit/Scaler.java,
+ classpath/gnu/classpath/jdwp/util/Value.java,
+ classpath/gnu/javax/net/ssl/Base64.java.
+ * Remove empty directories.
+
+ * Makefile.am(nat_source_files): Add natVMOperatingSystemMXBeanImpl.cc.
+ * java/lang/Class.java(setAccessible): Merge from classpath.
+ * java/util/Locale.java: Remove.
+ * gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java,
+ gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.cc: New.
+ * gcj/javaprims.h: Update class declarations.
+ * scripts/classes.pl: Update usage.
+ * HACKING: Mention to build all peers.
+
+2007-06-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure: Regenerate.
+
+2007-05-31 Andrew Haley <aph@redhat.com>
+
+ * java/lang/natClassLoader.cc (_Jv_NewClassFromInitializer): Clear
+ INTERPRETED access modifier.
+
+2007-05-31 Paolo Bonzini <bonzini@gnu.org>
+
+ PR libjava/32098
+ * configure: Regenerated.
+ * aclocal.m4: Regenerated.
+
+2007-05-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libjava/32098
+ * configure: Regenerated.
+
+2007-05-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure.ac: Don't include ../config/confsubdir.m4.
+ * aclocal.m4: Regenerated.
+ * configure: Likewise.
+
+2007-05-27 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/32078
+ * configure.ac: Include confsubdir.m4.
+ * configure: Regenerate.
+
+2007-05-24 Keith Seitz <keiths@redhat.com>
+
+ * include/java-interp.h (_Jv_InterpFrame::get_pc): Only deduct
+ one when pc_ptr is non-NULL.
+
+ * prims.cc (parse_init_args): Enable JVMTI with agentlib
+ and agentpath options.
+
+ * testsuite/lib/libjava.exp (exec_gij): Add new addl_flags
+ parameter.
+ * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one):
+ Pass '-agentlib:dummyagent' when executing gij.
+ (gij_jvmti_run): Build dummy JVMTI agent before running tests,
+ and remove it when finished.
+ * testsuite/libjava.jvmti/dummyagent.c: New file.
+
+2007-05-23 Steve Ellcey <sje@cup.hp.com>
+
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * gcj/Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2007-05-17 Kyle Galloway <kgallowa@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
+ (executeMethods): Remove cast to ClassReferenceTypeId.
+ * classpath/lib/gnu/classpath/jdwp/processor/
+ ReferenceTypeCommandSet.class: Rebuilt.
+
+2007-05-17 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMMethod.cc (getModifiers): Check for native
+ classes and mark methods as native appropriately.
+
+2007-05-17 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/VMFrame.java (<init>): Add parameter for "this"
+ pointer.
+ * gnu/classpath/jdwp/VMFrame.h: Regenerated.
+ * classpath/lib/gnu/classpath/jdwp/VMFrame.class: Rebuilt.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (getFrame): Use new
+ VMFrame constructor.
+
+2007-05-16 David Daney <ddaney@avtrex.com>
+
+ * include/java-stack.h (_Jv_FrameInfo): Remove union definition.
+ (_Jv_StackFrame): Remove commented out code.
+ (_Jv_UnwindState): Remove superfluous 'typedef'.
+ * sun/misc/natUnsafe.cc (spinlock): Add white space to quiet
+ compiler warnings.
+ * gnu/java/lang/management/natVMMemoryPoolMXBeanImpl.cc
+ (getCollectionUsage): Don't declare unused parameter n.
+ (getMemoryManagerNames): Same.
+ * gnu/gcj/util/natGCInfo.cc (gc_debug_info): Remove superfluous
+ 'typedef'.
+
+2007-05-16 Keith Seitz <keiths@redhat.com>
+
+ * include/java-interp.h (breakpoint_at): Declare.
+ * interpret.cc (breakpoint_at): New function.
+ * gnu/classpath/jdwp/VMVirtualMachine.java (_event_list):
+ New member.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (initialize):
+ Initialize _event_list.
+ (handle_single_step): If there is a breakpoint at the
+ location at which we are stopping, do not send the notification.
+ Instead add the event to a list of events that occur at this
+ location.
+ (jdwpBreakpointCB): If the event list is not empty, send
+ whatever events are in it and the breakpoint event in a single
+ notification.
+ Mark parameter jni_env as MAYBE_UNUSED.
+ * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class:
+ Regenerated.
+ * gnu/classpath/jdwp/VMVirtualMachine.h: Regenerated.
+
+2007-05-15 David Daney <ddaney@avtrex.com>
+
+ * classpath/lib/javax/swing/text/html/HTMLEditorKit.class: Regenerate
+ * gnu/java/awt/peer/gtk/ComponentGraphics.h: Same.
+
+2007-05-15 Keith Seitz <keiths@redhat.com>
+
+ * interpret.cc (STOREA): Rewrite using temporary variable to
+ avoid double-macro expansion side-effects.
+ (STOREI): Likewise.
+ (STOREF): Likewise.
+ (STOREL)[SIZEOF_VOID_P == 8]: Likewise.
+ (STORED)[SIZEOF_VOID_P == 8]: Likewise.
+ (STOREL)[SIZEOF_VOID_P != 8]: Likewise.
+ (STORED)[SIZEOF_VOID_P != 8]: Likewise.
+ (POKEI): Likewise.
+
+2007-05-12 David Daney <ddaney@avtrex.com>
+
+ PR libgcj/29324
+ * include/posix-threads.h (_Jv_BlockSigchld): Declare.
+ (_Jv_UnBlockSigchld): Same.
+ * posix-threads.cc: Include posix-threads.h.
+ (block_sigchld) Rename to...
+ (_Jv_BlockSigchld) ... this.
+ (_Jv_UnBlockSigchld): New function.
+ (_Jv_InitThreads): Call _Jv_BlockSigchld in place of block_sigchld.
+ (_Jv_ThreadStart): Same.
+ * java/lang/PosixProcess$ProcessManager.h: Regenerate.
+ * java/lang/PosixProcess.java: Clean up imports.
+ (ProcessManager): Make final.
+ (ProcessManager.queue): Genericise and make private.
+ (ProcessManager.pidToProcess): Remove.
+ (ProcessManager.liveProcesses): New field.
+ (ProcessManager.reaperPID): Remove.
+ (ProcessManager.nativeData): New field.
+ (ProcessManager.removeProcessFromMap): Remove.
+ (ProcessManager.addProcessToMap):Remove.
+ (ProcessManager.addToLiveProcesses): New method.
+ (ProcessManager.run): Rewritten.
+ (ProcessManager.reap): Change method signature,
+ (getErrorStream): Correct formatting.
+ (getInputStream): Same.
+ (spawn): Add process to liveProcesses list.
+ (pid): Make package private.
+ * java/lang/PosixProcess.h: Regenerate.
+ * java/lang/natPosixProcess.cc: Include posix.h and posix-threads.h.
+ Add useing namespace java::lang.
+ (ProcessManagerInternal): New struct.
+ (sigchld_handler): Rewritten.
+ (init): Rewritten.
+ (waitForSignal): Same.
+ (reap): Same.
+ (signalReaper): Same.
+ (nativeDestroy): Call kill as ::kill.
+ (nativeSpawn): Correct formatting.
+ * classpath/lib/java/lang/PosixProcess$EOFInputStream.class: Regenerate.
+ * classpath/lib/java/lang/PosixProcess.class: Same.
+ * classpath/lib/java/lang/PosixProcess$ProcessManager.class: Same.
+
+2007-05-07 Ian Lance Taylor <iant@google.com>
+
+ PR java/31842
+ * java/lang/natString.cc (_Jv_FormatInt): Avoid undefined signed
+ overflow.
+
+2007-05-07 Keith Seitz <keiths@redhat.com>
+
+ * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/Jdwp$1.class: Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/event/Event.class:
+ Regenerate.
+ * classpath/lib/gnu/classpath/jdwp/transport/JdwpConnection.class:
+ Regenerate.
+ * gnu/classpath/jdwp/Jdwp.h: Regenerate.
+ * gnu/classpath/jdwp/event/Event.h: Regenerate.
+ * gnu/classpath/jdwp/transport/JdwpConnection.h: Regenerate.
+
+2007-05-04 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (getClassMethod): Change
+ to use JVMTI.
+
+2007-05-03 Keith Seitz <keiths@redhat.com>
+
+ * interpret.cc: Don't include ExceptionEvent.h.
+ * gnu/gcj/jvmti/natExceptionEvent.cc: Remove.
+ * Makefile.am (nat_source_files): Remove natExceptionEvent.cc.
+ * Makefile.in: Regenerated.
+
+2007-05-03 Keith Seitz <keiths@redhat.com>
+
+ * include/jvmti-int.h (_Jv_ReportJVMTIExceptionThrow):
+ Declare.
+ * interpret.cc (_Jv_ReportJVMTIExceptionThrow): New function.
+ (find_catch_location): New function.
+ (REPORT_EXCEPTION): New macro.
+ (throw_internal_error): Use REPORT_EXCEPTION.
+ (throw_incompatible_class_change_error): Likewise.
+ (throw_null_pointer_exception): Likewise.
+ (throw_class_format_error): Likewise.
+ * interpret-run.cc (INTERP_REPORT_EXCEPTION)[DEBUG]: Set
+ to REPORT_EXCEPTION.
+ (INTERP_REPORT_EXCEPTION)[!DEBUG]: Make nop.
+ (insn_new): Use INTERP_REPORT_EXCEPTION.
+ (insn_athrow): Likewise.
+ Remove previous JVMTI exception notifications.
+ Add JVMTI ExceptionCatch notificatin.
+ * jni.cc (_Jv_PopSystemFrame): Notify JVMTI clients of
+ exception throw.
+ * gnu/gcj/jvmti/ExceptionEvent.java: Removed.
+ * gnu/gcj/jvmti/ExceptionEvent.h: Removed.
+ * classpath/lib/gnu/gcj/jvmti/ExceptionEvent.class: Removed.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (jdwpExceptionCB): New function.
+ (jdwpVMInitCB): Set Exception event handler and enable.
+ * sources.am: Regenerated.
+ * Makefile.in: Regenerated.
+
+2007-05-03 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=237304
+ * Makefile.in: Regenerate.
+ * scripts/makemake.tcl (scan_directory): Treat default.css as a
+ property file.
+ * classpath/javax/swing/text/html/default.css: Move to...
+ * classpath/resource/javax/swing/text/html/default.css: New file.
+ * classpath/javax/swing/text/html/HTMLEditorKit.java
+ (getStyleSheet): Throw RuntimeException when style loading fails.
+ * sources.am (property_files): Add
+ classpath/resource/javax/swing/text/html/default.css.
+
+2007-05-02 Tom Tromey <tromey@redhat.com>
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=238755
+ * java/lang/natCharacter.cc (Character::getType): Handle negative
+ code points.
+ (Character::toLowerCase): Likewise.
+ (Character::toUpperCase): Likewise.
+ (Character::digit): Likewise.
+ (Character::getNumericValue): Likewise.
+ (Character::getDirectionality): Likewise.
+ (Character::toTitleCase): Likewise.
+
+2007-04-30 Keith Seitz <keiths@redhat.com>
+
+ * interpret-run.cc (NEXT_INSN)[DEBUG]: Advance PC before
+ executing the instruction.
+ * include/java-interp.h (_Jv_InterpFrame::get_pc): Subtract
+ one insn from the frame's PC. _Jv_InterpMethod::run et al
+ will advance the PC before executing the instruction.
+
+2007-04-27 Keith Seitz <keiths@redhat.com>
+
+ * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated.
+ * classpath/lib/gnu/classpath/jdwp/event/EventManager.class:
+ Regenerated.
+ * gnu/classpath/jdwp/event/EventManager.h: Regenerated.
+
+2007-04-27 Keith Seitz <keiths@redhat.com>
+
+ * classpath/lib/gnu/classpath/jdwp/event/filters/
+ LocationOnlyFilter.class: Regenerated;
+ * classpath/lib/gnu/classpath/jdwp/util/Location.class:
+ Regenerated.
+ * gnu/classpath/jdwp/VMMethod.java
+ * classpath/lib/gnu/classpath/jdwp/VMMethod.class:
+ Regenerated.
+ * gnu/classpath/jdwp/VMMethod.h: Regenerated.
+ * gnu/classpath/jdwp/util/Location.h: Regenerated.
+
+2007-04-27 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.h: Regenerate.
+ * gnu/java/awt/peer/gtk/ComponentGraphics.h: Regenerate.
+
+2007-04-25 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/VMIdManager.java (getObjectId): Deal with null
+ objects.
+ (get): Deal with ObjectId of 0.
+
+2007-04-24 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR libgcj/31084
+ * java/lang/natVMProcess.cc: Include platform.h before jvm.h.
+
+2007-04-24 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.java
+ (getThreadStatus): Implement.
+
+2007-04-24 Keith Seitz <keiths@redhat.com>
+
+ * headers.txt (gnu/gcj/jvmti/Breakpoint.h)[DIRECT_THREADED]:
+ Add _Jv_RewriteBreakpointInsn friend declaration.
+ * gnu/gcj/jvmti/natBreakpoint.cc (_Jv_RewriteBreakpointInsn)
+ [DIRECT_THREADED]: New function.
+ * gnu/gcj/jvmti/Breakpoint.h: Regenerate.
+ * interpret-run.cc: Define new REWRITE_INSN macro.
+ Changed all occurrences of insn rewriting to call REWRITE_INSN.
+
+2007-04-23 Keith Seitz <keiths@redhat.com>
+
+ * include/no-gc.h (_Jv_IsThreadSuspended): Declare.
+ * include/boehm-gc.h (_Jv_IsThreadSuspended): Likewise.
+ * boehm.cc (_Jv_IsThreadSuspended): New function.
+ * nogc.cc (_Jv_IsThreadSuspended): Likewise.
+ * jvmti.cc (_Jv_JVMTI_GetThreadState): New function.
+ (_Jv_JVMTI_Interface): Define GetThreadState.
+
+2007-04-23 Kyle Galloway <kgallowa@redhat.com>
+
+ * include/java-interp.h (_Jv_InterpFrame): Add pointer to the
+ interpreter PC.
+ (<init>): Add a pointer to the interpreter PC as a parameter with
+ default value NULL.
+ (get_pc): New method.
+ * interpret-run.cc: If debugging, pass a pointer to the PC when
+ creating the stack frame.
+ * jvmti.cc (_Jv_JVMTI_GetStackTrace): Call _Jv_InterpFrame::get_pc
+ to get the PC.
+
+2007-04-23 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (getSourceFile): Check
+ for null source file and throw an exception indicating this.
+
+2007-04-20 Keith Seitz <keiths@redhat.com>
+
+ * gnu/gcj/jvmti/BreakpointManager.java (newBreakpoint):
+ Install the new breakpoint into the bytecode.
+ (deleteBreakpoint): Remove the breakpoint from the bytecode.
+ * classpath/lib/gnu/gcj/jvmti/BreakpointManager.class:
+ Regenerate.
+ * gnu/gcj/jvmti/natBreakpoint.cc (initialize_native):
+ Don't install the breakpoint here.
+
+2007-04-19 Keith Seitz <keiths@redhat.com>
+
+ * interpret-run.cc [insn_breakpoint]: Save the original
+ insn for the breakpoint before posting the JVMTI notification.
+
+2007-04-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.h: Rebuilt.
+
+2007-04-18 Tom Tromey <tromey@redhat.com>
+
+ * Regenerated headers with new gjavah.
+
+2007-04-18 Andrew Haley <aph@redhat.com>
+
+ * java/lang/reflect/natVMProxy.cc (ncode_closure): Add
+ method_index.
+ (generateProxyClass): Add field $Proxy0.m. Store methods array in
+ it.
+ (run_proxy): Retrieve the method to invoke from in $Proxy0.m.
+ * java/lang/Class.h: Remove _Jv_LookupProxyMethod.
+ * java/lang/natClass.cc: Likewise.
+ * headers.txt: Likewise.
+ * java/lang/reflect/Method.h: Likewise.
+
+2007-04-16 Andrew Haley <aph@redhat.com>
+
+ * gnu/gcj/runtime/BootClassLoader.java (getBootURLLoader): New
+ method.
+ (bootGetResource): Use getBootURLLoader() to load resources.
+ (bootGetResources): Likewise.
+
+ * java/lang/reflect/natMethod.cc (Method::invoke): In invoke also
+ check that the method's declaring class is accessible.
+
+2007-04-10 Keith Seitz <keiths@redhat.com>
+
+ * sources.am: Regenerate.
+ * Makefile.in: Likewise.
+
+2007-04-09 Kyle Galloway <kgallowa@redhat.com>
+
+ * interpret-run.cc: If debugging, check if args is NULL before
+ getting the "this" pointer.
+
+2007-04-09 Kyle Galloway <kgallowa@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/value/ArrayValue.java: New file.
+ * classpath/lib/gnu/classpath/jdwp/value/ArrayValue.class: New file.
+ * gnu/classpath/jdwp/ArrayValue.h: New file.
+ * gnu/classpath/jdwp/natVMFrame.cc (getValue): Add array case.
+ (setValue): Ditto.
+
+2007-04-09 David Daney <ddaney@avtrex.com>
+
+ PR libgcj/23758
+ * java/lang/natPosixProcess.cc (nativeSpawn): Move building of
+ environment before the fork.
+ * testsuite/libjava.lang/Process_7.java: New test.
+ * testsuite/libjava.lang/Process_7.out: Its expected results.
+ * testsuite/libjava.lang/Process_7.jar: Generated file.
+
+2007-04-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ * prims.cc (load_jvmti_agent): Add the missing `,'.
+
+2007-04-09 Kyle Galloway <kgallowa@redhat.com>
+
+ * gij.cc (main): Accept -agentlib and -agentpath options.
+ * prims.cc (parse_init_args): Deal with -agentlib and -agentpath.
+ (load_jvmti_agent): New function.
+
+2007-04-04 Tania Bento <tbento@redhat.com>
+
+ * java/text/DecimalFormatSymbols.java: Added the year 2007 to
+ Copyright information and introduced new variable, currency.
+ (DecimalFormatSymbols(Locale)): Define currency and intlCurrencySymbol
+ to "XXX", currencySymbol to "?" and localCurrency appropriately.
+ (getCurrency): Fixed documentation and return the value of currency.
+ (setCurrency): Fixed documentation and update the value of currency.
+ (setInternationalCurrencySymbol): Fixed documentation and update the
+ value of currency.
+ * java/util/Currency.java: Introduced two new variables, properties
+ and fractionDigits. In the static block, a properties object is
+ created and the currency resource is loaded.
+ (Currency(Locale)): fractionDigits is defined.
+ (Currency(String)): New method.
+ (getDefaultFractionDigits): Return the value of fractionDigits.
+ (getInstance(String)): Check if String is equal to "XXX".
+
+2007-04-04 Kyle Galloway <kgallowa@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/util/VariableTable.java: Change longs
+ to ints for argCnt and slots.
+ (write): Replace writeLong with writeInt for the above.
+
+2007-04-03 Andrew Haley <aph@redhat.com>
+
+ * testsuite/libjava.lang/ProxyTest.java: New test.
+
+2007-04-02 Tom Tromey <tromey@redhat.com>
+
+ http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=205157
+ * gnu/java/nio/channels/natFileChannelPosix.cc (mapImpl): Extend
+ file, when writing, if it is too short.
+
+2007-04-02 Tom Tromey <tromey@redhat.com>
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233406
+ * gnu/java/net/natPlainSocketImplPosix.cc (create): Return if
+ already created.
+ * gnu/java/net/PlainSocketImpl.java (getLocalAddress): Handle case
+ where localport is -1.
+ (create): Now public.
+ * gnu/java/nio/SocketChannelImpl.java (SocketChannelImpl): Call
+ 'create' on the socket.
+
+2007-04-02 Andrew Haley <aph@redhat.com>
+
+ * java/lang/reflect/natVMProxy.cc (run_proxy): Use
+ _Jv_LookupProxyMethod to find the Method.
+ If parameter_types->length == 0, pass a null paramameter list,
+ not a zero-length parameter list.
+ * java/lang/natClass.cc (_Jv_LookupProxyMethod): New function.
+ * java/lang/Class.h (_Jv_LookupProxyMethod): Declare.
+
+2007-04-02 Kyle Galloway <kgallowa@redhat.com>
+
+ * interpret-run.cc: Add code to properly set up variable slots
+ when debugging.
+ * gnu/classpath/jdwp/natVMFrame.cc (checkJVMTIError): New function.
+ (getObjectJVMTI): New function.
+ (setObjectJVMTI): New function.
+ (getIntJVMTI): New function.
+ (setIntJVMTI): New function.
+ (getLongJVMTI): New function.
+ (setLongJVMTI): New function.
+ (getFloatJVMTI): New function.
+ (setFloatJVMTI): New function.
+ (getDoubleJVMTI): New function.
+ (setDoubleJVMTI): New function.
+ (getFrameDepth): New function.
+ (getValue): Implement.
+ (setValue): Implement.
+
+2007-04-02 Kyle Galloway <kgallowa@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java
+ (executeResume): Call VMVirtualMachine.resumeThread.
+
+2007-03-29 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/29869:
+ * java/util/logging/LogManager.java (readConfiguration): Handle
+ comma-separated 'handlers'. Don't try to add a non-existing
+ handler.
+
+2007-03-27 Tom Tromey <tromey@redhat.com>
+
+ * sources.am, Makefile.in: Rebuilt.
+ * scripts/mime.types: Removed.
+ * scripts/MakeDefaultMimeTypes.java: Removed.
+ * gnu/gcj/io/MimeTypes.java: Removed.
+ * gnu/gcj/io/MimeTypes.h: Removed.
+ * gnu/gcj/io/DefaultMimeTypes.java: Removed.
+ * gnu/gcj/io/DefaultMimeTypes.h: Removed.
+
+2007-03-27 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/VMFrame.java: Update from upstream
+ classpath.
+ * gnu/classpath/jdwp/natVMFrame.cc: Likewise.
+ * gnu/classpath/jdwp/VMVirtualMachine.java: Likewise.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc: Likewise.
+ (initialize): Fix compiler type-punning warning.
+ (getAllLoadedClasses): Return empty list instead of NULL.
+ (getLoadRequests): Likewise.
+ * gnu/classpath/jdwp/exception/InvalidTagException.h: New file.
+ * gnu/classpath/jdwp/exception/InvalidSlotException.h: New file.
+ * gnu/classpath/jdwp/exception/TypeMismatchException.h: New file.
+ * gnu/classpath/jdwp/VMVirtualMachine.h: Rebuilt.
+ * gnu/classpath/jdwp/value/CharValue.h: New file.
+ * gnu/classpath/jdwp/value/LongValue.h: New file.
+ * gnu/classpath/jdwp/value/ShortValue.h: New file.
+ * gnu/classpath/jdwp/value/Value.h: New file.
+ * gnu/classpath/jdwp/value/BooleanValue.h: New file.
+ * gnu/classpath/jdwp/value/VoidValue.h: New file.
+ * gnu/classpath/jdwp/value/ByteValue.h: New file.
+ * gnu/classpath/jdwp/value/FloatValue.h: New file.
+ * gnu/classpath/jdwp/value/ObjectValue.h: New file.
+ * gnu/classpath/jdwp/value/StringValue.h: New file.
+ * gnu/classpath/jdwp/value/ValueFactory.h: New file.
+ * gnu/classpath/jdwp/value/IntValue.h: New file.
+ * gnu/classpath/jdwp/value/DoubleValue.h: New file.
+ * gnu/classpath/jdwp/VMFrame.h: Rebuilt.
+ * gnu/classpath/jdwp/id/NullObjectId.h: New file.
+ * gnu/classpath/jdwp/util/MethodResult.h: Rebuilt.
+ * gnu/classpath/jdwp/util/NullObject.h: New file.
+ * gnu/classpath/jdwp/util/MonitorInfo.h: New file.
+ * Makefile.in: Rebuilt.
+ * sources.am: Rebuilt.
+
+2006-03-26 David Daney <ddaney@avtrex.com>
+
+ * configure.ac: Remove checks for mktime, alloca, ioctl, gmtime_r,
+ fork, execvp, execinfo.h, pthread_mutexattr_settype,
+ pthread_mutexattr_setkind_np and sys/wait.h.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * include/config.h.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * gcj/Makefile.in: Regenerate.
+
+2007-03-23 Gary Benson <gbenson@redhat.com>
+
+ * link.cc (_Jv_Linker::resolve_method_entry):
+ Ensure that the argument types and the return type of the
+ found method match those expected by the calling method.
+
+2007-03-22 David Daney <ddaney@avtrex.com>
+
+ PR libgcj/31228
+ * configure.ac: Add checks for getrlimit and sys/resource.h.
+ * include/posix.h (_Jv_platform_close_on_exec): Remove.
+ * include/config.h.in: Regenerate.
+ * configure: Regenerate.
+ * gnu/java/nio/channels/natFileChannelPosix.cc (open): Remove call to
+ _Jv_platform_close_on_exec;
+ * gnu/java/net/natPlainSocketImplPosix.cc (create): Likewise.
+ (accept): Likewise.
+ * gnu/java/net/natPlainDatagramSocketImplPosix.cc (create):Likewise.
+ * java/lang/natPosixProcess.cc: Include sys/resource.h.
+ (nativeSpawn): Close all file descriptors. Don't set FD_CLOEXEC on
+ pipes.
+
+2007-03-20 Andrew Haley <aph@redhat.com>
+
+ * testsuite/libjava.lang/PR31264.java: New test.
+
+2007-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (AM_MAKEFLAGS): Pass through mandir.
+ * Makefile.in: Rebuilt.
+
+2007-03-13 Keith Seitz <keiths@redhat.com>
+
+ * include/java-interp.h (_Jv_InterpClass): Declare
+ friend function _Jv_GetInterpClassSourceFile.
+ * java/lang/Class.h (Class): Likewise.
+ * java/lang/natClass.cc (_Jv_GetInterpClassSourceFile):
+ New function.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (getSourceFile): Implement.
+
+2007-03-13 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * Makefile.am (AM_CXXFLAGS): Define ECJ_JAR_FILE.
+ * classpath/configure.ac: Add --with-ecj-jar configure option.
+ * classpath/gnu/classpath/Configuration.java.in (ECJ_JAR): New
+ field.
+ * classpath/INSTALL: Document --with-ecj-jar configure option and
+ ecj jar requirement for com.sun.tools.javac support.
+ * classpath/tools/Makefile.am: Build decendents of com and sun
+ directories.
+ * configure.ac: Substitute ECJ_JAR in stub Configuration.java.
+ * gnu/classpath/Configuration.java,
+ gnu/classpath/natConfiguration.cc (ecj): New method.
+ (ECJ_JAR): New field.
+ * scripts/makemake.tcl (scan_packages): Add com directory.
+ * sources.am (property_files): Add
+ classpath/resource/sun/rmi/rmic/messages.properties and
+ classpath/resource/com/sun/tools/javac/messages.properties.
+ * classpath/resource/com, classpath/resource/com/sun,
+ classpath/resource/com/sun/tools,
+ classpath/resource/com/sun/tools/javac, classpath/resource/sun,
+ classpath/resource/sun/rmi, classpath/resource/sun/rmi/rmic,
+ classpath/tools/classes/com, classpath/tools/classes/com/sun,
+ classpath/tools/classes/com/sun/javadoc,
+ classpath/tools/classes/com/sun/tools,
+ classpath/tools/classes/com/sun/tools/doclets,
+ classpath/tools/classes/sun, classpath/tools/classes/sun/rmi,
+ classpath/tools/classes/sun/rmi/rmic, classpath/tools/com,
+ classpath/tools/com/sun, classpath/tools/com/sun/javadoc,
+ classpath/tools/com/sun/tools,
+ classpath/tools/com/sun/tools/doclets,
+ classpath/tools/com/sun/tools/javac, classpath/tools/sun,
+ classpath/tools/sun/rmi, classpath/tools/sun/rmi/rmic: New
+ directories.
+ * classpath/resource/com/sun/tools/javac/messages.properties,
+ classpath/resource/sun/rmi/rmic/messages.properties,
+ classpath/tools/classes/com/sun/javadoc/ClassDoc.class,
+ classpath/tools/classes/com/sun/javadoc/ConstructorDoc.class,
+ classpath/tools/classes/com/sun/javadoc/Doc.class,
+ classpath/tools/classes/com/sun/javadoc/DocErrorReporter.class,
+ classpath/tools/classes/com/sun/javadoc/Doclet.class,
+ classpath/tools/classes/com/sun/javadoc/ExecutableMemberDoc.class,
+ classpath/tools/classes/com/sun/javadoc/FieldDoc.class,
+ classpath/tools/classes/com/sun/javadoc/MemberDoc.class,
+ classpath/tools/classes/com/sun/javadoc/MethodDoc.class,
+ classpath/tools/classes/com/sun/javadoc/PackageDoc.class,
+ classpath/tools/classes/com/sun/javadoc/ParamTag.class,
+ classpath/tools/classes/com/sun/javadoc/Parameter.class,
+ classpath/tools/classes/com/sun/javadoc/ProgramElementDoc.class,
+ classpath/tools/classes/com/sun/javadoc/RootDoc.class,
+ classpath/tools/classes/com/sun/javadoc/SeeTag.class,
+ classpath/tools/classes/com/sun/javadoc/SerialFieldTag.class,
+ classpath/tools/classes/com/sun/javadoc/SourcePosition.class,
+ classpath/tools/classes/com/sun/javadoc/Tag.class,
+ classpath/tools/classes/com/sun/javadoc/ThrowsTag.class,
+ classpath/tools/classes/com/sun/javadoc/Type.class,
+ classpath/tools/classes/com/sun/javadoc/TypeVariable.class,
+ classpath/tools/classes/com/sun/tools/doclets/Taglet.class,
+ classpath/tools/classes/sun/rmi/rmic/Main.class,
+ classpath/tools/classes/sun/rmi/rmic/Messages.class,
+ classpath/tools/com/sun/javadoc/ClassDoc.java,
+ classpath/tools/com/sun/javadoc/ConstructorDoc.java,
+ classpath/tools/com/sun/javadoc/Doc.java,
+ classpath/tools/com/sun/javadoc/DocErrorReporter.java,
+ classpath/tools/com/sun/javadoc/Doclet.java,
+ classpath/tools/com/sun/javadoc/ExecutableMemberDoc.java,
+ classpath/tools/com/sun/javadoc/FieldDoc.java,
+ classpath/tools/com/sun/javadoc/MemberDoc.java,
+ classpath/tools/com/sun/javadoc/MethodDoc.java,
+ classpath/tools/com/sun/javadoc/PackageDoc.java,
+ classpath/tools/com/sun/javadoc/ParamTag.java,
+ classpath/tools/com/sun/javadoc/Parameter.java,
+ classpath/tools/com/sun/javadoc/ProgramElementDoc.java,
+ classpath/tools/com/sun/javadoc/RootDoc.java,
+ classpath/tools/com/sun/javadoc/SeeTag.java,
+ classpath/tools/com/sun/javadoc/SerialFieldTag.java,
+ classpath/tools/com/sun/javadoc/SourcePosition.java,
+ classpath/tools/com/sun/javadoc/Tag.java,
+ classpath/tools/com/sun/javadoc/ThrowsTag.java,
+ classpath/tools/com/sun/javadoc/Type.java,
+ classpath/tools/com/sun/javadoc/TypeVariable.java,
+ classpath/tools/com/sun/tools/doclets/Taglet.java,
+ classpath/tools/com/sun/tools/javac/Main.java,
+ classpath/tools/com/sun/tools/javac/Messages.java,
+ classpath/tools/sun/rmi/rmic/Main.java,
+ classpath/tools/sun/rmi/rmic/Messages.java: New files.
+ * Makefile.in, classpath/Makefile.in, classpath/configure,
+ classpath/doc/Makefile.in, classpath/doc/api/Makefile.in,
+ classpath/examples/Makefile.in, classpath/external/Makefile.in,
+ classpath/external/jsr166/Makefile.in,
+ classpath/external/relaxngDatatype/Makefile.in,
+ classpath/external/sax/Makefile.in,
+ classpath/external/w3c_dom/Makefile.in,
+ classpath/include/Makefile.in, classpath/include/config.h.in,
+ classpath/lib/Makefile.in,
+ classpath/lib/gnu/classpath/Configuration.class,
+ classpath/native/Makefile.in, classpath/native/fdlibm/Makefile.in,
+ classpath/native/jawt/Makefile.in,
+ classpath/native/jni/Makefile.in,
+ classpath/native/jni/classpath/Makefile.in,
+ classpath/native/jni/gconf-peer/Makefile.in,
+ classpath/native/jni/gtk-peer/Makefile.in,
+ classpath/native/jni/java-io/Makefile.in,
+ classpath/native/jni/java-lang/Makefile.in,
+ classpath/native/jni/java-net/Makefile.in,
+ classpath/native/jni/java-nio/Makefile.in,
+ classpath/native/jni/java-util/Makefile.in,
+ classpath/native/jni/midi-alsa/Makefile.in,
+ classpath/native/jni/midi-dssi/Makefile.in,
+ classpath/native/jni/native-lib/Makefile.in,
+ classpath/native/jni/qt-peer/Makefile.in,
+ classpath/native/jni/xmlj/Makefile.in,
+ classpath/native/plugin/Makefile.in,
+ classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
+ classpath/tools/Makefile.in, configure,
+ gnu/classpath/Configuration.h: Regenerate.
+
+2007-03-12 Kyle Galloway <kgallowa@redhat.com>
+
+ * jvmti.cc (_Jv_JVMTI_GetArgumentsSize): Make wide type arrays count
+ as a sigle slot.
+
+2007-03-12 Marco Trudel <mtrudel@gmx.ch>
+
+ * java/lang/natString.cc (getBytes (jstring enc)):
+ Fixed the loop for multiple cycles, Code cleanup
+
+2007-03-09 Tom Tromey <tromey@redhat.com>
+
+ * sources.am, Makefile.in: Rebuilt.
+ * scripts/makemake.tcl (scan_directory): Allow service files to be
+ omitted.
+ Omit all XML-related service files.
+
+2007-03-07 Tom Tromey <tromey@redhat.com>
+
+ * configure: Rebuilt.
+ * configure.ac: Clear vm-tools-packages.
+
+2007-03-07 Mohan Embar <gnustuff@thisiscool.com>
+
+ * java/lang/Win32Process.java: Added nested class EOFInputStream.
+ * java/lang/natWin32Process.cc (ChildProcessPipe): Added DUMMY
+ enum and implementation.
+ (startProcess): Use redirect flag.
+ * classpath/lib/java/lang/Win32Process.class: Regenerated.
+ * classpath/lib/java/lang/Win32Process$EOFInputStream.class: New.
+ * gcj/javaprims.h: Regenerated.
+ * java/lang/Win32Process$EOFInputStream.h: New.
+
+2007-03-07 Andrew Haley <aph@redhat.com>
+
+ * libgcj_bc.c (JvRunMainName): Declare.
+
+2007-03-07 Gary Benson <gbenson@redhat.com>
+
+ * sources.am, Makefile.in: Rebuilt.
+
+2007-03-07 Mohan Embar <gnustuff@thisiscool.com>
+
+ * gcj/javaprims.h: Regenerated.
+
+2007-03-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * include/jvm.h (_Jv_ClosureListFinalizer): New.
+ (_Jv_Linker::create_error_method): Adjust.
+ * boehm.cc (_Jv_ClosureListFinalizer): New.
+ * nogc.cc (_Jv_ClosureListFinalizer): New.
+ * java/lang/Class.h (class _Jv_ClosureList): New.
+ (class java::lang::Class): Declare it as friend.
+ * java/lang/natClass.cc (_Jv_ClosureList::releaseClosures): New.
+ (_Jv_ClosureList::registerClousure): New.
+ * include/execution.h (_Jv_ExecutionEngine): Add get_closure_list.
+ (_Jv_CompiledEngine::do_get_closure_list): New.
+ (_Jv_CompiledEngine::_Jv_CompiledEngine): Use it.
+ (_Jv_IndirectCompiledClass): Add closures.
+ (_Jv_IndirectCompiledEngine::get_aux_info): New.
+ (_Jv_IndirectCompiledEngine::do_allocate_field_initializers): Use
+ it.
+ (_Jv_IndirectCompiledEngine::do_get_closure_list): New.
+ (_Jv_IndirectCompiledEngine::_Jv_IndirectCompiledEngine): Use it.
+ (_Jv_InterpreterEngine::do_get_closure_list): Declare.
+ (_Jv_InterpreterEngine::_Jv_InterpreterEngine): Use it.
+ * interpret.cc (FFI_PREP_RAW_CLOSURE): Use _loc variants.
+ (node_closure): Add closure list.
+ (_Jv_InterpMethod::ncode): Add jclass argument. Use
+ ffi_closure_alloc and the separate code pointer. Register the
+ closure for finalization.
+ (_Jv_JNIMethod::ncode): Likewise.
+ (_Jv_InterpreterEngine::do_create_ncode): Pass klass to ncode.
+ (_Jv_InterpreterEngine::do_get_closure_list): New.
+ * include/java-interp.h (_Jv_InterpMethod::ncode): Adjust.
+ (_Jv_InterpClass): Add closures field.
+ (_Jv_JNIMethod::ncode): Adjust.
+ * defineclass.cc (_Jv_ClassReader::handleCodeAttribute): Adjust.
+ (_Jv_ClassReader::handleMethodsEnd): Likewise.
+ * link.cc (struct method_closure): Add closure list.
+ (_Jv_Linker::create_error_method): Add jclass argument. Use
+ ffi_closure_alloc and the separate code pointer. Register the
+ closure for finalization.
+ (_Jv_Linker::link_symbol_table): Remove outdated comment about
+ sharing of otable and atable. Adjust.
+ * java/lang/reflect/natVMProxy.cc (ncode_closure): Add closure
+ list.
+ (ncode): Add jclass argument. Use ffi_closure_alloc and the
+ separate code pointer. Register the closure for finalization.
+ (java::lang::reflect::VMProxy::generateProxyClass): Adjust.
+ * testsuite/libjava.jar/TestClosureGC.java: New.
+ * testsuite/libjava.jar/TestClosureGC.out: New.
+ * testsuite/libjava.jar/TestClosureGC.xfail: New.
+ * testsuite/libjava.jar/TestClosureGC.jar: New.
+
+2007-03-06 Kyle Galloway <kgallowa@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/exception/AbsentInformationException.java: New file.
+ * classpath/lib/gnu/classpath/jdwp/exception/AbsentInformationException.class: Ditto.
+ * gnu/classpath/jdwp/exception/AbsentInformationException.h: Ditto.
+ * gnu/classpath/jdwp/natVMMethod.cc: Add CHECK_INTERP_CLASS macro.
+ (VMMethod::getLineTable): Use new macro.
+ (VMMethod::getVariableTable): Implement.
+ * sources.am: Regenerated.
+ * Makefile.in: Ditto.
+
+2007-03-06 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (bin_PROGRAMS): Added gcjh.
+ (gcjh_SOURCES, gcjh_LDFLAGS, gcjh_LINK, gcjh_LDADD,
+ gcjh_DEPENDENCIES): New variables.
+
+2007-03-06 Kyle Galloway <kgallowa@redhat.com>
+
+ * jvmti.cc(_Jv_JVMTI_GetLocalVariableTable): Fix _Jv_Malloc parameters.
+ * testsuite/libjava.jvmti/interp/natgetlocalvartable.cc
+ (do_getlocalvartable_tests): Add Deallocate calls to free strings.
+
+2007-03-05 Matthias Klose <doko@debian.org>
+
+ * Makefile.am (gij_LDFLAGS): Use dbexecdir.
+ * Makefile.in: Regnerate.
+
+2007-03-05 Mark Wielaard <mark@klomp.org>
+
+ * java/lang/Character.java: Re-merged with Classpath.
+ * java/lang/natString.cc (nativeCompareTo): Renamed from
+ compareTo.
+ * java/lang/StringBuilder.java: Re-merged with Classpath.
+ * java/lang/String.java: Re-merged with Classpath.
+ (nativeCompareTo): Renamed from compareTo.
+ * java/lang/StringBuffer.java: Re-merged with Classpath.
+ * jni.cc (_Jv_JNI_GetAnyMethodID): Split calls to append.
+
+2007-03-05 Andrew Haley <aph@redhat.com>
+
+ * java/lang/reflect/natVMProxy.cc (ncode_closure.meth): Delete.
+ (generateProxyClass): Don't pass method to ncode.
+ (run_proxy): Call _Jv_GetReflectedMethod to find the proxy method.
+ * java/lang/reflect/Method.h: Rebuild.
+ * java/lang/reflect/Method.java (internalGetParameterTypes,
+ internalGetExceptionTypes): New methods.
+ * headers.txt (class java/lang/reflect/Method): Declare
+ _Jv_GetReflectedMethod. Be its friend.
+ * java/lang/natClass.cc (_Jv_GetReflectedMethod): New method.
+ * java/lang/Class.h: Declare it. Be its friend.
+
+2007-03-05 Tom Tromey <tromey@redhat.com>
+
+ * sources.am, Makefile.in: Rebuilt.
+ * scripts/makemake.tcl (emit_package_rule): Don't omit
+ VMProcess.java.
+ * Makefile.am (nat_source_files): Added natVMProcess.cc.
+ (inner_nat_headers): Added ImmediateEOFInputStream.h.
+ * gcj/javaprims.h: Regenerated.
+ * java/lang/System.java (EnvironmentMap): Now package-private.
+ (EnvironmentMap(Map)): New constructor.
+ (EnvironmentMap.put): New method.
+ * java/lang/natWin32Process.cc (startProcess): Update.
+ * java/lang/Win32Process.java (Win32Process): Added 'redirect'
+ argument.
+ (startProcess): Likewise.
+ * java/lang/EcosProcess.java (EcosProcess): Added 'redirect'
+ argument.
+ * java/lang/natPosixProcess.cc (nativeSpawn): Handle redirection.
+ * java/lang/PosixProcess.java (redirect): New field.
+ (PosixProcess): Added 'redirect' argument.
+ * java/lang/natRuntime.cc (execInternal): Added 'redirect'
+ argument to Process creation.
+ * java/lang/natVMProcess.cc: New file.
+ * java/lang/ProcessBuilder.java: Removed.
+ * java/lang/VMProcess.java: New file.
+
+2007-03-03 Andrew Haley <aph@redhat.com>
+
+ * java/lang/natClass.cc (parseAnnotationElement): Correct long
+ annotations to read JV_CONSTANT_Long, not JV_CONSTANT_Double.
+
+2007-03-02 Andrew Haley <aph@redhat.com>
+
+ * sun/reflect/annotation/AnnotationInvocationHandler.java:
+ Generify in a few places.
+ (equals): Rewrite to use invoke on local proxy.
+ (deepToString): Remove most of it.
+ (toString): Make nonstatic.
+ (arrayClone): Delete.
+ (coerce): New method.
+ (invoke): Rewrite to handle gcj's structures correctly.
+ * java/lang/natClass.cc (getDeclaredAnnotations): Fix test for
+ null loader.
+ * sources.am: Regenerate.
+ * Makefile.am: Likewise.
+
+2007-03-02 Andrew Haley <aph@redhat.com>
+
+ * sun/reflect/annotation/AnnotationInvocationHandler.java:
+ Whitespace only changes.
+
+2007-03-02 Andrew Haley <aph@redhat.com>
+
+ * sun/reflect/annotation/AnnotationInvocationHandler.java: Moved
+ from Classpath to libgcj local.
+
+2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
+
+ * Makefile.am: Add dummy install-pdf target.
+ * Makefile.in: Regenerate
+ * include/Makefile.in: Regenerate
+ * testsuite/Makefile.in: Regenerate
+ * gcj/Makefile.in: Regenerate
+
+2007-02-23 Gary Benson <gbenson@redhat.com>
+
+ * gnu/gcj/tools/gcj_dbtool/Main.java: Updated copyright year.
+
+2007-02-23 Gary Benson <gbenson@redhat.com>
+
+ * java/lang/VMCompiler.java
+ (compileClass): Don't lose zeros from within the digest.
+
+2007-02-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR libgcj/17002
+ PR classpath/28550
+ * java/util/VMTimeZone.java (getDefaultTimeZoneId): To read
+ /etc/localtime, use ZoneInfo.readTZFile instead of
+ VMTimeZone.readtzFile. Get better timezone name for /etc/localtime,
+ either if it is a symlink or through /etc/sysconfig/clock.
+ (readSysconfigClockFile): New static method.
+ (readtzFile): Removed.
+ * java/lang/System.java: Add gnu.java.util.zoneinfo.dir to comments.
+ * posix.cc (_Jv_platform_initProperties): Set
+ gnu.java.util.zoneinfo.dir.
+ * sources.am (gnu_java_util_source_files): Add
+ classpath/gnu/java/util/ZoneInfo.java.
+ * Makefile.in: Regenerated.
+ * java/util/VMTimeZone.h: Regenerated.
+ * java/util/TimeZone.h: Regenerated.
+ * gnu/java/util/ZoneInfo.h: Generated.
+
+2007-02-22 Mohan Embar <gnustuff@thisiscool.com>
+
+ * include/win32-threads.h: Added #undef OUT.
+
+2007-02-21 Kyle Galloway <kgallowa@redhat.com>
+
+ * jvmti.cc (_Jv_JVMTI_GetArgumentsSize): New function.
+ * testsuite/libjava.jvmti/interp/getargssize.java: New test.
+ * testsuite/libjava.jvmti/interp/getargssize.h: Ditto.
+ * testsuite/libjava.jvmti/interp/getargssize.jar: Ditto.
+ * testsuite/libjava.jvmti/interp/getargssize.out: Ditto.
+ * testsuite/libjava.jvmti/interp/natgetargssize.cc: Ditto.
+
+2007-02-21 Gary Benson <gbenson@redhat.com>
+
+ * java/util/GregorianCalendar.java: Removed.
+ * sources.am, Makefile.in: Rebuilt.
+
+2007-02-20 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (jdwpClassPrepareCB): Move class status stuff to ...
+ (getClassStatus): ... here.
+
+2007-02-20 Gary Benson <gbenson@redhat.com>
+
+ * gnu/awt/xlib/XEventLoop.h: Regenerated.
+ * gnu/java/awt/peer/gtk/GThreadMutex.h: Likewise.
+ * gnu/java/rmi/server/ConnectionRunnerPool$ConnectionRunner.h:
+ Likewise.
+ * gnu/java/rmi/server/UnicastConnectionManager.h: Likewise.
+ * java/lang/SecurityManager.h: Likewise.
+ * java/lang/Thread.h: Likewise.
+ * java/security/VMSecureRandom$Spinner.h: Likewise.
+ * java/util/concurrent/atomic/AtomicBoolean.h: Likewise.
+ * java/util/concurrent/atomic/AtomicInteger.h: Likewise.
+ * java/util/concurrent/atomic/AtomicLong.h: Likewise.
+ * java/util/concurrent/atomic/AtomicReference.h: Likewise.
+ * java/util/concurrent/ConcurrentHashMap$HashEntry.h: Likewise.
+ * java/util/concurrent/ConcurrentHashMap$Segment.h: Likewise.
+ * java/util/concurrent/ConcurrentLinkedQueue.h: Likewise.
+ * java/util/concurrent/ConcurrentLinkedQueue$Node.h: Likewise.
+ * java/util/concurrent/ConcurrentSkipListMap.h: Likewise.
+ * java/util/concurrent/ConcurrentSkipListMap$Index.h: Likewise.
+ * java/util/concurrent/ConcurrentSkipListMap$Node.h: Likewise.
+ * java/util/concurrent/Exchanger.h: Likewise.
+ * java/util/concurrent/Exchanger$Node.h: Likewise.
+ * java/util/concurrent/FutureTask$Sync.h: Likewise.
+ * java/util/concurrent/LinkedBlockingQueue$Node.h: Likewise.
+ * java/util/concurrent/locks/AbstractQueuedLongSynchronizer.h:
+ Likewise.
+ * java/util/concurrent/locks/AbstractQueuedLongSynchronizer$Node.h:
+ Likewise.
+ * java/util/concurrent/locks/AbstractQueuedSynchronizer.h: Likewise.
+ * java/util/concurrent/locks/AbstractQueuedSynchronizer$Node.h:
+ Likewise.
+ * java/util/concurrent/ScheduledThreadPoolExecutor.h: Likewise.
+ * java/util/concurrent/SynchronousQueue.h: Likewise.
+ * java/util/concurrent/SynchronousQueue$TransferQueue.h: Likewise.
+ * java/util/concurrent/SynchronousQueue$TransferQueue$QNode.h:
+ Likewise.
+ * java/util/concurrent/SynchronousQueue$TransferStack.h: Likewise.
+ * java/util/concurrent/SynchronousQueue$TransferStack$SNode.h:
+ Likewise.
+ * java/util/concurrent/ThreadPoolExecutor.h: Likewise.
+ * java/util/concurrent/ThreadPoolExecutor$Worker.h: Likewise.
+ * java/util/logging/ErrorManager.h: Likewise.
+ * javax/swing/plaf/basic/BasicSpinnerUI$2.h: Likewise.
+ * javax/swing/plaf/basic/BasicSpinnerUI$4.h: Likewise.
+
+2007-02-16 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (get_line_table): New function.
+ (handle_single_step): New function.
+ (jdwpSingleStepCB): New function.
+ (jdwpVMInitCB): Define a JVMTI single step
+ callback, but don't enable it until needed.
+
+2007-02-16 David Daney <ddaney@avtrex.com>
+
+ * java/lang/Thread.java (Thread(ThreadGroup, Runnable, String)): Pass
+ new parameter constructor.
+ (Thread(ThreadGroup, Runnable, String, long)): Same.
+ (Thread(String, boolean)): New constructor.
+ (Thread(Thread, ThreadGroup, Runnable, String): Add parameter
+ noInheritableThreadLocal, don't call
+ InheritableThreadLocal.newChildThread if set.
+ * java/lang/PosixProcess.java(ProcessManager()): Set
+ noInheritableThreadLocal in super.
+ * java/lang/natThread.cc (_Jv_AttachCurrentThread): Pass new
+ parameter to Thread constructor.
+ (_Jv_AttachCurrentThreadAsDaemon): Same.
+ * java/lang/Thread.h: Regenerate.
+ * classpath/lib/java/lang/Thread.class: Same.
+ * classpath/lib/java/lang/PosixProcess$EOFInputStream.class: Same.
+ * classpath/lib/java/lang/PosixProcess.class: Same.
+ * classpath/lib/java/lang/Thread$State.class: Same.
+ * classpath/lib/java/lang/PosixProcess$ProcessManager.class: Same.
+
+2007-02-16 Kyle Galloway <kgallowa@redhat.com>
+
+ * interpret.cc: Add extra DEBUG_LOCALS_INSN calls for multi-slot
+ variables to maintain type info.
+ * interpret-run.cc: Add local variable info to frame in the debug
+ interpreter.
+ * jvmti.cc (getLocalFrame): New method.
+ (_Jv_JVMTI_GetLocalObject): New method.
+ (_Jv_JVMTI_GetLocallInt): New method.
+ (_Jv_JVMTI_GetLocalFloat): New method.
+ (_Jv_JVMTI_GetLocalLong): New method.
+ (_Jv_JVMTI_GetLocalDouble): New method.
+ (_Jv_JVMTI_SetLocalObject): New method.
+ (_Jv_JVMTI_SetLocalInt): New method.
+ (_Jv_JVMTI_SetLocalFloat): New method.
+ (_Jv_JVMTI_SetLocalLong): New method.
+ (_Jv_JVMTI_SetLocalDouble): New method.
+
+2007-02-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/gcj/tools/gcj_dbtool/Main.java
+ (bytesToString): Don't lose zeros from within the digest.
+
+2007-02-15 Andrew Haley <aph@redhat.com>
+
+ * Makefile.am (nat_source_files): Remove
+ java/lang/management/natVMManagementFactory.cc.
+ * java/lang/Thread.java (getStackTrace): Use reflection to call
+ the ManagementFactory.
+ * java/lang/management/VMManagementFactory.java: Remove native
+ methods.
+ * java/lang/management/natVMManagementFactory.cc: Deleted.
+ * sources.am: Regnerate.
+ * scripts/makemake.tcl: Add new "bcheaders" type.
+ Move java/lang/management and gnu/classpath/management to "bc".
+ Move gnu/java/lang/management to "bcheaders".
+
+2007-02-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * interpret.cc (_Jv_InterpMethod::check_handler): New method.
+ * interpret-run.cc: Change the catch section to report exception
+ events and to use the new check_handler method.
+ * include/java-interp.h (_Jv_InterpMethod): Add check_handler.
+ * gnu/gcj/jvmti/ExceptionEvent.java: New file.
+ * gnu/gcj/jvmti/ExceptionEvent.h: New file.
+ * gnu/gcj/jvmti/natExceptionEvent.cc: New file.
+ * libjava/classpath/lib/gnu/gcj/jvmti/ExceptionEvent.class: New
+ file.
+ * sources.am: Added ExceptionEvent.java.
+ * Makefile.am: Added natExceptionEvent.cc
+ * Makefile.in: Regenerated.
+ * include/Makefile.in: Regenerated.
+ * gcj/Makefile.in: Regenerated.
+
+2007-02-15 Johannes Schmidt <jschmidt@avtrex.com>
+ David Daney <ddaney@avtrex.com>
+
+ * configure.ac: Create vm-tools-packages file. Add
+ gnu/gcj/tools/gc_analyze to standard.omit and vm-tools-packages.
+ Check for /proc/self/maps.
+ * Makefile.am (bin_PROGRAMS): Added gc-analyze.
+ (gc_analyze_SOURCES): New.
+ (gc_analyze_LDFLAGS): New.
+ (gc_analyze_LINK): New.
+ (gc_analyze_LDADD): New.
+ (gc_analyze_DEPENDENCIES): New.
+ (nat_source_files): Add gnu/gcj/util/natGCInfo.cc.
+ * Makefile.in: Regenerated.
+ * configure: Regenerated.
+ * include/config.h.in: Regenerated.
+ * sources.am: Regenerated.
+ * scripts/makemake.tcl: Don't include gc-analyze classes in libgcj.
+ * gnu/gcj/tools/gc_analyze/SymbolLookup.java: New.
+ * gnu/gcj/tools/gc_analyze/ObjectMap.java: New.
+ * gnu/gcj/tools/gc_analyze/MemoryMap.java: New.
+ * gnu/gcj/tools/gc_analyze/SymbolTable.java: New.
+ * gnu/gcj/tools/gc_analyze/BlockMap.java: New.
+ * gnu/gcj/tools/gc_analyze/BytePtr.java: New.
+ * gnu/gcj/tools/gc_analyze/ItemList.java: New.
+ * gnu/gcj/tools/gc_analyze/ToolPrefix.java: New.
+ * gnu/gcj/tools/gc_analyze/MemoryAnalyze.java: New.
+ * gnu/gcj/util/GCInfo.java: New.
+ * gnu/gcj/util/GCInfo.h: New.
+ * gnu/gcj/util/natGCInfo.cc: New.
+ * gnu/gcj/util/UtilPermission.java: New.
+ * gnu/gcj/util/UtilPermission.h: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/SymbolTable.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/ObjectMap$ObjectItem.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryMap$RangeComparator.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/BlockMap$PtrMarks.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryMap$Range.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/BlockMap.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/BytePtr.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$SubstringComparator.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/ItemList.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/ToolPrefix.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$1$Info.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$1.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$2.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$3.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$4.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryAnalyze$OptionParser.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/BlockMap$SizeKind.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/SymbolLookup.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/ObjectMap.class: New.
+ * classpath/tools/gnu/gcj/tools/gc_analyze/MemoryMap.class: New.
+ * classpath/lib/gnu/gcj/util/GCInfo.class: New.
+ * classpath/lib/gnu/gcj/util/UtilPermission.class: New.
+
+2007-02-15 David Daney <ddaney@avtrex.com>
+
+ * gnu/java/net/PlainSocketImpl.h: Regenerate.
+ * gnu/classpath/jdwp/VMVirtualMachine.h: Same.
+ * gnu/classpath/jdwp/VMFrame.h: Same.
+ * java/net/Socket.h: Same.
+ * java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet.h: Same.
+
+2007-02-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * defineclass.cc (_Jv_ClassReader::read_one_code_attribute):
+ Added LocalVariableTable attribute handling.
+ (_Jv_ClassReader::pool_Utf8_to_char_arr): New method.
+ * jvmti.cc (_Jv_JVMTI_GetLocalVariableTable): New method.
+ * include/java-interp.h: Added local_var_table and
+ local_var_table_len fields to _Jv_InterpMethod.
+ (_Jv_InterpMethod::get_local_var_table): New method.
+ * testsuite/libjava.jvmti/interp/getlocalvartable.java: New test.
+ * testsuite/libjava.jvmti/interp/getlocalvartable.jar: New test.
+ * testsuite/libjava.jvmti/interp/getlocalvartable.out: Output
+ for new test.
+ * testsuite/libjava.jvmti/interp/getlocalvartable.h: New test.
+ * testsuite/libjava.jvmti/interp/natgetlocalvartable.cc: New test.
+
+2007-02-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine (getFrames): Implement.
+
+2007-02-13 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (jdwpBreakpointCB): New function.
+ (jdwpVMInitCB): Define and enable the breakpoint
+ callback.
+
+2007-02-13 Andrew Haley <aph@redhat.com>
+
+ * testsuite/libjava.lang/Divide_2.out
+ * testsuite/libjava.lang/Divide_2.java: New test.
+
+2007-02-12 Keith Seitz <keiths@redhat.com>
+
+ * jvmti.cc (_Jv_JVMTI_GetStackTrace): Remove cast
+ from jthread to Thread *; it is no longer needed.
+ (_Jv_JVMTI_GetFrameCount): Likewise.
+ Fix small formatting typo.
+
+2007-02-12 Tom Tromey <tromey@redhat.com>
+
+ * sources.am, Makefile.in: Rebuilt.
+ * java/lang/Socket.java: Removed override.
+ * java/lang/DatagramSocket.java: Removed override.
+ * gnu/java/net/PlainSocketImpl.java (localSocketAddress): New
+ field.
+ (getLocalAddress): New method.
+ * gnu/java/net/PlainDatagramSocketImpl.java
+ (PlainDatagramSocketImpl): Throws IOException.
+ * gnu/java/net/natPlainSocketImplPosix.cc (write): Remove
+ 'sizeof'.
+ (read): Likewise.
+
+2007-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ * java/util/VMTimeZone.java: Rewrite to handle both the old
+ 'TZif\0' format and the new one.
+
+2007-02-10 Andrew Haley <aph@redhat.com>
+
+ PR java/30742
+ * gnu/classpath/natVMStackWalker.cc (GET_CALLING_CLASS): New.
+ (getCallingClass): Call GET_CALLING_CLASS.
+ (getCallingClassLoader): Likewise.
+
+2007-02-10 Mohan Embar <gnustuff@thisiscool.com>
+
+ * configure: Rebuilt.
+ * configure.ac (GCJH): Reverted second part of patch of 2006-12-20.
+
+2007-02-10 Mohan Embar <gnustuff@thisiscool.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (BUILD_ECJ1): Unify the command for renaming ecjx to
+ the host's ecj1 executable.
+
+2007-02-09 Richard Henderson <rth@redhat.com>
+
+ * sysdep/alpha/locks.h (read_barrier): New.
+
+2007-02-09 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/VMVirtualMachine.java
+ (_stepping_threads): New member.
+ * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class:
+ Regenerated.
+ * gnu/classpath/jdwp/VMVirtualMachine.h:
+ Regenerated.
+ * gnu/claspath/jdwp/natVMVirtualMachine.cc
+ (get_request_step_filter): New function.
+ (DISABLE_EVENT): New macro.
+ (initialize): Initialize _stepping_threads.
+ (registerEvent): Implement EVENT_SINGLE_STEP.
+ (unregisterEvent): Likewise.
+
+2007-02-08 Keith Seitz <keiths@redhat.com>
+
+ * sources.am: Regenerate.
+ * Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+ * gcj/Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+
+ * classpath/lib/javax/management/MBeanServerFactory.class:
+ Regenerate.
+
+2007-02-08 Kyle Galloway <kgallowa@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/processor/
+ StackFrameCommandSet.java (executeGetValues): Pass jlong instead
+ of ByteBuffer.
+ (executeSetValues): Ditto.
+ (executeThisObject): Ditto.
+ * classpath/gnu/classpath/jdwp/processor/
+ StackFrameCommandSet.class: Rebuilt.
+ * classpath/lib/gnu/classpath/jdwp/VMVirtualMachine.class:
+ Rebuilt.
+ * classpath/lib/gnu/classpath/jdwp/VMFrame.class: Rebuilt.
+ * classpath/lib/gnu/classpath/jdwp/exception/
+ InvalidFrameException.java: New file.
+ * gnu/classpath/jdwp/VMFrame.java: Added field for thread of
+ frame.
+ (Constructor): New method.
+ * gnu/classpath/jdwp/VMFrame.h: Regenerated.
+ * gnu/classpath/jdwp/VMVirtualMachine.java
+ (getFrame): Changed ByteBuffer to jlong.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (getFrame): Implement.
+ * gnu/classpath/jdwp/VMVirtualMachine.h: Regenerated.
+
+2007-02-08 Kyle Galloway <kgallowa@redhat.com>
+
+ * include/java-interp.h (_Jv_InterpFrame): obj_ptr field added
+ to hold "this" pointer for frame.
+ (_Jv_InterpFrame::get_this_ptr): New method.
+ * interpret-run.cc: Copy the "this" pointer into obj_ptr.
+
+2007-02-07 Keith Seitz <keiths@redhat.com>
+
+ * include/java-interp.h (_Jv_Frame::depth):
+ New function.
+ * jvmti.cc (_Jv_JVMTI_GetFrameCount): Use _Jv_Frame::depth.
+
+2007-02-07 Kyle Galloway <kgallowa@redhat.com>
+
+ * jvmti.cc (CHECK_FOR_NATIVE_METHOD): New macro.
+ (_Jv_JVMTI_GetMaxLocals): New method.
+ * include/java-interp.h
+ (_Jv_InterpMethod::get_max_locals): New method.
+
+2007-02-01 Marco Trudel <mtrudel@gmx.ch>
+
+ * jni.cc (_Jv_JNI_DeleteWeakGlobalRef): Check for NULL objects.
+
+2007-02-07 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libjava.jni/init.c: New file.
+ * testsuite/libjava.jni/init.java: New file.
+ * testsuite/libjava.jni/init.out: New file.
+ * testsuite/libjava.jni/init.jar: New file.
+ * testsuite/libjava.jni/init.h: New file.
+ * testsuite/libjava.jni/init$NativeClass.h: New file.
+
+2007-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR libgomp/28468
+ * configure: Regenerate.
+
+2007-02-06 Andrew Haley <aph@redhat.com>
+
+ * scripts/makemake.tcl (emit_bc_rule): Set the source filename.
+ * sources.am: Rebuild.
+
+2007-02-05 Keith Seitz <keiths@redhat.com>
+
+ * jvmti.cc (_envListLock): Change type to
+ ReentrantReadWriteLock.
+ (_Jv_JVMTI_DisposeEnvironment): Switch to read/write
+ lock.
+ (check_enabled_event): Likewise.
+ (_Jv_GetJVMTIEnv): Likewise.
+ (_Jv_JVMTI_Init): Likewise.
+ (_Jv_JVMTI_PostEvent): Likewise.
+
+2007-02-05 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (registerEvent): Implement EVENT_BREAKPOINT.
+ (unregisterEvent): Likewise.
+ (get_request_location): New function.
+
+2007-02-05 Matthias Klose <doko@debian.org>
+
+ testsuite/Makefile.am (compile-tests): Fix typo.
+ testsuite/Makefile.in: Regenerate.
+
+2007-02-02 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (getFrameCount):
+ Implment.
+
+2007-02-02 Jakub Jelinek <jakub@redhat.com>
+
+ * configure.ac (libjava_cv_anon_version_script): New test.
+ (ANONVERSCRIPT): New AM_CONDITIONAL.
+ * configure: Rebuilt.
+ * Makefile.am (extra_ldflags_libjava): Link with -Wl,--version-script
+ if ANONVERSCRIPT.
+ * Makefile.in: Rebuilt.
+ (libgcj_la_DEPENDENCIES): Depend on libgcj.ver.
+ * libgcj.ver: New file.
+
+2007-02-01 David Daney <ddaney@avtrex.com>
+
+ * scripts/makemake.tcl: Replace gnu/xml build with build of all
+ its subpackages.
+ * sources.am: Regenerate.
+ * Makefile.in: Regenerate.
+
+2007-02-01 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/ClassLoader.java (getResources): No longer final.
+
+2007-02-01 Tom Tromey <tromey@redhat.com>
+
+ * java/util/logging/LogManager.java (loggers): Genericized.
+ (addLogger): Merged.
+ (findAncestor): Likewise.
+ (getLogger): Likewise.
+ (getLoggerNames): Genericized.
+ (reset): Merged.
+ (getLevelProperty): Likewise.
+ * java/lang/reflect/Method.java (getDeclaringClass): Genericized.
+ * java/lang/reflect/Constructor.java (getParameterTypes):
+ Genericized.
+ (getExceptionTypes): Likewise.
+ (newInstance): Likewise.
+ * java/lang/reflect/Array.java (newInstance): Genericized.
+ * java/lang/Object.java (getClass): Genericized.
+ * java/nio/charset/spi/CharsetProvider.java (charsets):
+ Genericized.
+ * java/text/Collator.java: Implement Comparable<Object>.
+
+2007-02-01 Tom Tromey <tromey@redhat.com>
+
+ * java/util/Calendar.java: Implement Comparable<Calendar>. Update
+ comments.
+ (clear): Call complete.
+ (setTimeZone): Call computeTime, computeFields.
+ (compareTo): New method.
+ * java/nio/charset/Charset.java: Implement Comparable<Charset>.
+ (availableCharsets): Genericized.
+ (aliases): Likewise.
+ (compareTo): Changed argument type.
+ * java/lang/ClassLoader.java (loadClass): Genericized.
+ (findClass): Likewise.
+ (defineClass): Likewise.
+ (resolveClass): Likewise.
+ (findSystemClass): Likewise.
+ (setSigners): Likewise.
+ (findLoadedClass): Likewise.
+ (getResources): Likewise.
+ (findResources): Likewise.
+ (getSystemResources): Likewise.
+ (checkInitialized): New method.
+ * java/lang/Class.java (getCanonicalName): New method.
+
+2007-01-31 Keith Seitz <keiths@redhat.com>
+
+ * include/jvmti-int.h (JVMTI): Declare member "enabled".
+ * jvmti.cc (JVMTI): Add member "enabled".
+ (_Jv_GetJVMTIEnv): Mark JVMTI enabled.
+ * interpret.cc (_Jv_InterpMethod::ncode): Use JVMTI::enabled
+ instead of gnu::classpath::jdwp::Jdwp::isDebugging.
+ (_Jv_CompileMethod): If JVMTI is enabled, use run_debug
+ instead of run to compile the method.
+
+ * interpret-run.cc [DEBUG] (NEXT_INSN): Add JVMTI single step
+ notification.
+
+2007-01-31 Andreas Tobler <a.tobler@schweiz.org>
+
+ * testsuite/libjava.jvmti/jvmti-interp.exp (gij_jvmti_test_one): Add
+ -shared-libgcc to the cxxflaglist for Darwin.
+
+2007-01-31 Tom Tromey <tromey@redhat.com>
+
+ * scripts.am, Makefile.in: Rebuilt.
+ * scripts/makemake.tcl (gnu/javax/swing/text/html/parser): Build
+ as 'ordinary'.
+ (emit_ordinary_rule): New proc.
+
+2007-01-31 Keith Seitz <keiths@redhat.com>
+
+ * testsuite/libjava.jvmti/getmethodname.h: New file.
+ * testsuite/libjava.jvmti/getmethodname.jar: New file.
+
+2007-01-31 Andrew Haley <aph@redhat.com>
+
+ * prims.cc (_Jv_Abort): fflush (stderr).
+ * java/lang/natClassLoader.cc (_Jv_CheckABIVersion): Abort.
+
+2007-01-31 Tom Tromey <tromey@redhat.com>
+
+ * configure, Makefile.in: Rebuilt.
+ * configure.ac (JAR): Check for -@ feature.
+ * Makefile.am (libgcj-$(gcc_version).jar): Use find -prune.
+
+2007-01-31 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/30606:
+ * configure, include/config.h.in: Rebuilt.
+ * configure.ac: Check for magic_t in magic.h.
+ * java/net/natVMURLConnection.cc: Use HAVE_MAGIC_T.
+
+2007-01-30 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (libgcj-$(gcc_version).jar): Rewrote.
+
+2007-01-30 Andreas Tobler <a.tobler@schweiz.org>
+
+ * testsuite/libjava.jvmti/natevents.cc (FieldModificationCB): Use a
+ cast to print it right.
+
+2007-01-29 Kaloian Doganov <kaloian@doganov.org>
+
+ PR libgcj/30600:
+ * gnu/gcj/convert/BytesToCharsetAdaptor.java (read): Fix call to
+ 'limit'.
+
+2007-01-29 Kyle Galloway <kgallowa@redhat.com>
+
+ * include/java-interp.h: Added _Jv_Frame class and its two
+ subclasses _Jv_InterpFrame and _Jv_NativeFrame. Also moved
+ _Jv_FrameType from java-stack.h.
+ * include/java-stack.h: Removed _Jv_FrameType.
+ * java/lang/Thread.java: Added frame member to hold new
+ composite frame stack.
+ * java/lang/Thread.h: Regenerated.
+ * java/lang/Thread.class: Rebuilt.
+ * jni.cc (_Jv_JNIMethod::call): Push a frame onto the stack when
+ calling a JNI method.
+ * jvmti.cc (_Jv_JVMTI_GetStackTrace): New Method.
+ (_Jv_JVMTI_GetFrameCount): New method.
+ * stacktrace.cc (UnwindTraceFn): Modified to use new _Jv_Frame
+ classes.
+ * testsuite/libjava.jvmti/interp/getstacktrace.jar: New test.
+ * testsuite/libjava.jvmti/interp/natgetstacktrace.cc: New test.
+ * testsuite/libjava.jvmti/interp/getstacktrace.h: New test.
+ * testsuite/libjava.jvmti/interp/getstacktrace.jar: New test.
+ * testsuite/libjava.jvmti/interp/getstacktrace.out: Output file
+ for test.
+
+2007-01-29 Tom Tromey <tromey@redhat.com>
+
+ * interpret.cc (run_debug): Remove comment.
+ (STOREA): Reformat.
+ (STOREI): Likewise.
+ (STOREF): Likewise.
+ (STOREL): Likewise.
+ (STORED): Likewise.
+ (POKEI): Likewise.
+ (run_normal_debug): Likewise.
+ (run_synch_object_debug): Likewise.
+ (run_class_debug): Likewise.
+ (run_synch_class_debug): Likewise.
+ (get1s): Likewise.
+ (get1u): Likewise.
+ (get2u): Likewise.
+ (get4): Likewise.
+ (NULLARRAYCHECK): Likewise.
+ (ARRAYBOUNDSCHECK): Likewise.
+ * interpret-run.cc (insn_target) <breakpoint>: Tidy.
+
+2007-01-29 Tom Tromey <tromey@redhat.com>
+
+ * configure, Makefile.in: Rebuilt.
+ * Makefile.am (bin_SCRIPTS): Never install scripts/jar.
+ * configure.ac (BASH_JAR): Removed conditional.
+ (JAR): Prefer the jar found by AC_CHECK_PROGS.
+
+2007-01-29 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (interpret.lo): New target. Add -fwrap to
+ AM_CXXFLAGS.
+
+2007-01-29 Keith Seitz <keiths@redhat.com>
+
+ * include/jvmti_md.h (_CLASSPATH_VM_JVMTI_TYPES_DEFINED):
+ Define.
+ [__GCJ_JNI_IMPL__]: Define our own JVMTI types when building
+ gcj. All jvmti object types now are defined to be their
+ corresponding java classes.
+ * jvmti.cc (_Jv_JVMTI_SuspendThread): Remove casting from
+ jthread to Thread*.
+ (_Jv_JVMTI_ResumeThread): Likewise.
+ (_Jv_JVMTI_InterruptThread): Likewise.
+ (_Jv_JVMTI_SetEventNotificationMode): Likewise.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (jdwpClassPrepareCB): Likewise.
+ (jdwpThreadEndCB): Likewise.
+ (jdwpThreadStartCB): Likewise.
+ (jdwpVMInitCB): Likewise.
+
+2007-01-28 Michele Sandri <gpointorama@gmail.com>
+
+ * gnu/java/nio/channels/natFileChannelWin32.cc
+ (lock): Implemented.
+ (unlock): Implemented.
+
+2007-01-27 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR libgcj/30513
+ * configure.host: Add forgottten sysdep_dir to sparc. Add a flag to
+ libgcj_flags to undefine 'sun' at compile time.
+ * sysdep/sparc/locks.h (read_barrier): New functions for 32 and 64 bit
+ Sparc.
+ (write_barrier): Likewise.
+
+2007-01-27 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (getAllClassMethods): Move error handling to ...
+ (throw_jvmti_error): ... here.
+ (jdwpClassPrepareCB): New function.
+ (jdwpThreadEndCB): New function.
+ (jdwpThreadStartCB): New function.
+ (jdwpVMDeathCB): New function.
+ (jdwpVMInitCB): Define and enable callbacks for
+ ClassPrepare, ThreadEnd, ThreadStart, and VMDeath.
+
+2007-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (generic_header_files): Add $(inner_nat_headers).
+ * testsuite/Makefile.am (check-dejaGNU): Depend on compile-tests.
+ (MYGCJH): New variable.
+ (compile-tests): New goal.
+ * Makefile.in: Rebuilt.
+ * testsuite/Makefile.in: Rebuilt.
+
+2007-01-26 Andrew Haley <aph@redhat.com>
+
+ * java/lang/natClass.cc (initializeClass): Re-throw
+ SecurityExceptions.
+ * java/lang/natVMClassLoader.cc (loadClass): checkPackageAccess.
+ * java/lang/ClassLoader.java: (loadClass): Likewise.
+
+2007-01-26 Tom Tromey <tromey@redhat.com>
+
+ * Updated headers.
+
+2007-01-25 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/29594:
+ * gnu/gcj/convert/Convert.java (main): Correctly handle missing
+ input or output encodings. Removed unused local variables.
+
+2007-01-25 Keith Seitz <keiths@redhat.com>
+
+ * include/jvmti-int.h (_Jv_GetJDWP_JVMTIEnv): Declare.
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (_Jv_GetJDWP_JVMTIEnv): New function.
+ * gnu/classpath/jdwp/natVMMethod.cc (getName): Implement.
+ (getSignature): Implement.
+ (getModifiers): Implement.
+
+2007-01-25 Andrew Haley <aph@redhat.com>
+
+ * configure, Makefile.in, include/config.h.in: Rebuilt.
+ * Makefile.am (libgcj_la_LIBADD): Removed $(LIBMAGIC).
+ * configure.ac: Don't check for libmagic.
+ * java/net/natVMURLConnection.cc (p_magic_open, p_magic_load,
+ p_magic_close, p_magic_buffer): New globals.
+ (init): Look up 'magic' functions.
+ (guessContentTypeFromBuffer): Updated.
+
+2007-01-25 Keith Seitz <keiths@redhat.com>
+
+ * jvmti.cc (_Jv_JVMTI_GetMethodName): New function.
+ (_Jv_JVMTI_Interface): Define GetMethodName.
+ * testsuite/libjava.jvmti/getmethodname.java: New file.
+ * testsuite/libjava.jvmti/natgetmethodname.cc: New file.
+ * testsuite/libjava.jvmti/getmethodname.out: New file.
+
+2007-01-24 Kyle Galloway <kgallowa@redhat.com>
+
+ * libjava/testsuite/libjava.jvmti/jvmti-interp.exp: New file.
+ * libjava/testsuite/libjava.jvmti/interp: New folder.
+ * libjava/testsuite/lib/libjava.exp (exec_gij): New Method.
+
+2007-01-24 Keith Seitz <keiths@redhat.com>
+
+ * link.cc (_Jv_Linker::wait_for_state): Add JVMTI
+ CLASS_PREPARE notification.
+
+2007-01-24 Keith Seitz <keiths@redhat.com>
+
+ * interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h,
+ gnu/gcj/jvmti/BreakpointManager.h, jvmti.h, and jvmti-int.h
+ * interpret-run.cc: Implement insn_breakpoint.
+
+2007-01-24 Keith Seitz <keiths@redhat.com>
+
+ * prims.cc (_Jv_RunMain): Send JVMTI event notifications
+ for VM_INIT and VM_DEATH instead of the JDWP notifications.
+
+2007-01-24 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (getAllClassMethods): Implement.
+
+2007-01-24 Andrew Haley <aph@redhat.com>
+
+ * gnu/classpath/natVMStackWalker.cc: Call InitClass everywhere.
+ (getClassContext) Add a barrier to prevent GetStackWalkerStack()
+ from being sibcalled.
+
+2007-01-24 Andrew Haley <aph@redhat.com>
+
+ * scripts/makemake.tcl (emit_bc_rule): Set the source filename.
+ * sources.am: Rebuild.
+
+2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * exception.cc (parse_lsda_header, PERSONALITY_FUNCTION): Replaced
+ _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.
+
+2007-01-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libgcj/30550
+ * Makefile.am (ecjx_DEPENDENCIES): Add libgcj_bc.la if needed.
+ * Makefile.in: Regenerated.
+
+2007-01-22 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc
+ (getClassMethod): Implement.
+
+2007-01-22 Keith Seitz <keiths@redhat.com>
+
+ * java/lang/Class.h (_Jv_GetClassStatus): Declare.
+ * java/lang/natClass.cc (_Jv_GetClassStatus): New function.
+ * jvmti.cc (_Jv_JVMTI_GetClassStatus): New function.
+ (_Jv_JVMTI_Interface): Define GetClassStatus.
+
+2007-01-22 Tom Tromey <tromey@redhat.com>
+
+ * configure: Rebuilt.
+ * configure.ac (GCJ): Reverted patch of 2006-12-20.
+
+2007-01-22 Tom Tromey <tromey@redhat.com>
+
+ PR java/29812:
+ * testsuite/libjava.jni/pr29812.java: New file.
+ * testsuite/libjava.jni/pr29812_injar.java: New file.
+ * testsuite/libjava.jni/pr29812_injar.jar: New file.
+ * testsuite/libjava.jni/pr29812.out: New file.
+ * testsuite/libjava.jni/pr29812_injar.c: New file.
+ * testsuite/libjava.jni/pr29812_injar.h: New file.
+ * testsuite/libjava.jni/pr29812.jar: New file.
+ * testsuite/libjava.jni/pr29812.c: New file.
+ * testsuite/libjava.jni/pr29812.h: New file.
+ * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation):
+ New proc.
+ (gcj_jni_invocation_test_one): Use it.
+ (gcj_jni_pr29812): New proc.
+ (gcj_jni_run): Use it.
+ * java/lang/natRuntime.cc (_load): Push a new system frame before
+ calling JNI_OnLoad.
+ * include/jvm.h (_Jv_JNI_PopSystemFrame): Declare.
+ (_Jv_GetJNIEnvNewFrameWithLoader): Likewise.
+ * jni.cc (struct _Jv_JNI_LocalFrame) <marker>: Now unsigned char.
+ <allocated_p>: Now bool.
+ <loader>: New field.
+ (_Jv_JNI_EnsureLocalCapacity): Updated.
+ (_Jv_JNI_NewLocalRef): Likewise.
+ (_Jv_JNI_NewLocalRef): Likewise.
+ (_Jv_JNI_PopLocalFrame): Likewise.
+ (_Jv_JNI_FindClass): Likewise.
+ (_Jv_GetJNIEnvNewFrame): Likewise.
+ (_Jv_JNI_AttachCurrentThread): Likewise.
+ (_Jv_GetJNIEnvNewFrameWithLoader): New function.
+ (_Jv_GetJNIEnvNewFrame): Use it.
+ * include/jni_md.h (_CLASSPATH_JNIENV_CONTENTS): Removed 'klass'.
+
+2007-01-22 Tom Tromey <tromey@redhat.com>
+
+ * libtool-version: Bump current to 9.
+
+2007-01-22 Andrew Haley <aph@redhat.com>
+
+ * sysdep/alpha/locks.h (write_barrier): New.
+
+2007-01-21 Matthias Klose <doko@debian.org>
+
+ * Makefile.am (install-exec-hook): Use transformed name.
+ * Makefile.in: Regenerate.
+
+2007-01-19 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc: Mark unused parameters
+ in methods and reformat.
+
+ * gnu/classpath/jdwp/natVMFrame.cc: Mark unused parameters with
+ MAYBE_UNUSED.
+
+2007-01-18 Keith Seitz <keiths@redhat.com>
+
+ From Macro Trudel <mtrudel@gmx.ch>:
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (jdwpVMInitCB):
+ Use JNICALL.
+
+2007-01-18 Marco Trudel <mtrudel@gmx.ch>
+
+ * jni.cc (_Jv_JNI_FindClass): Initialize class.
+ * testsuite/libjava.jni/findclass2.jar: New file.
+ * testsuite/libjava.jni/findclass2.h: New file.
+ * testsuite/libjava.jni/findclass2.java: New file
+ * testsuite/libjava.jni/findclass2.c: New file.
+ * testsuite/libjava.jni/findclass2.out: New file.
+
+2007-01-18 Tom Tromey <tromey@redhat.com>
+
+ * configure: Rebuilt.
+ * configure.ac: Use multi_basedir instead of libgcj_basedir.
+
+2007-01-18 Gary Benson <gbenson@redhat.com>
+
+ * gnu/java/nio/natVMPipeEcos.cc:
+ Renamed from gnu/java/nio/natPipeImplEcos.cc.
+ * gnu/java/nio/natVMPipePosix.cc:
+ Renamed from gnu/java/nio/natPipeImplPosix.cc.
+ * gnu/java/nio/natVMPipeWin32.cc:
+ Renamed from gnu/java/nio/natPipeImplWin32.cc.
+ * gnu/java/nio/natVMSelectorEcos.cc:
+ Renamed from gnu/java/nio/natSelectorImplEcos.cc.
+ * gnu/java/nio/natVMSelectorPosix.cc:
+ Renamed from gnu/java/nio/natSelectorImplPosix.cc.
+ * gnu/java/nio/natVMSelectorWin32.cc:
+ Renamed from gnu/java/nio/natSelectorImplWin32.cc.
+ * java/io/natVMObjectInputStream.cc:
+ Renamed from java/io/natObjectInputStream.cc.
+ * java/lang/natVMDouble.cc:
+ Renamed from java/lang/natDouble.cc.
+ * java/lang/natVMFloat.cc:
+ Renamed from java/lang/natFloat.cc.
+ * Makefile.am, configure.ac: Reflect the above.
+ * Makefile.in, configure: Rebuilt.
+
+2007-01-17 Andrew Haley <aph@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (ecjx_LDFLAGS): Pass -fbootclasspath.
+
+2007-01-17 Keith Seitz <keiths@redhat.com>
+
+ * java/lang/natThread.cc (finish_): Add JVMTI ThreadEnd notification.
+ (_Jv_NotifyThreadStart): Add JVMTI ThreadStart notification.
+
+2007-01-16 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ * configure.ac: Use multi.m4 from aclocal rather than custom
+ code. Use multi_basedir instead libgcj_basedir. Test for
+ /proc/self/exe when not cross-compiling.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+
+2007-01-17 Gary Benson <gbenson@redhat.com>
+
+ * java/nio/natVMDirectByteBufferImpl.cc:
+ Renamed from java/nio/natDirectByteBufferImpl.cc.
+ * Makefile.am: Reflect the above.
+ * Makefile.in: Rebuilt.
+
+2007-01-17 Marco Trudel <mtrudel@gmx.ch>
+
+ * jvmti.cc (_Jv_JVMTI_GetAllThreads): Now static. Use JNICALL.
+ Fixed indentation. Removed unused variable.
+
+2007-01-16 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/natThread.cc (finalize_native): Remove cast.
+ (_Jv_GetCurrentJNIEnv): Likewise.
+ * include/jvm.h (struct natThread) <jni_env>: Declare as
+ _Jv_JNIEnv*.
+
+2007-01-16 Keith Seitz <keiths@redhat.com>
+
+ * testsuite/libjava.jvmti/natevents.cc (FieldModificationCB): Use
+ %#llx instead of %d for new_value.
+ * testsuite/libjava.jvmti/events.out: Update expected output.
+ * testsuite/libjava.jvmti/events.jar: Regenerate.
+
+2007-01-16 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK):
+ New macro.
+ (ENABLE_EVENT): New macro.
+ (initialize): Define and enable JVMTI VM_INIT callback.
+ (jdwpVMInitCB): New function.
+
+2007-01-16 Kyle Galloway <kgallowa@redhat.com>
+
+ * jvmti.cc (_Jv_JVMTI_GetAllThreads): New function.
+ * testsuite/libjava.jvmti/getallthreads.java: New test.
+ * testsuite/libjava.jvmti/natgetallthreads.cc: Ditto.
+ * testsuite/libjava.jvmti/getallthreads.out: Ditto.
+ * testsuite/libjava.jvmti/getallthreads.h: Ditto.
+ * testsuite/libjava.jvmti/getallthreads.jar: Ditto.
+
+2007-01-15 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (suspendThread): Use
+ java.lang.StringBuilder instead of java.lang.StringBuffer.
+ (resumeThread): Likewise.
+
+2007-01-15 Gary Benson <gbenson@redhat.com>
+
+ * java/nio/MappedByteBuffer.java: Removed.
+ * sources.am, Makefile.in: Rebuilt.
+
+2007-01-15 Gary Benson <gbenson@redhat.com>
+
+ * java/net/URLClassLoader.java: Removed.
+ * gnu/java/net/loader/Load_gcjlib.java: New file.
+ * gnu/gcj/runtime/BootClassLoader.java: Ensure core
+ URL handler is present in static executables.
+ * sources.am, Makefile.in: Rebuilt.
+
+2007-01-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (libgcj_la_LDFLAGS): Add
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS).
+ (libgcj_tools_la_LDFLAGS): Likewise.
+ (libgcj_bc_la_LDFLAGS): Likewise.
+ * Makefile.in: Regenerated.
+
+ * configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
+ LIBGCJ_LD_SYMBOLIC_FUNCTIONS to $SYMBOLIC_LDFLAGS. Set
+ libgcj_ld_symbolic to $SYMBOLIC_LDFLAGS if it isn't set.
+ Substitute LIBGCJ_LD_SYMBOLIC_FUNCTIONS.
+ * configure: Regenerated.
+ * aclocal.m4: Likewise.
+ * gcj/Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+
+2007-01-12 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * sysdep/sh/locks.h (read_barrier): New.
+ (write_barrier): Likewise.
+
+2007-01-12 Andrew Haley <aph@redhat.com>
+
+ * include/i386-signal.h: Rewrite to use rt_sigaction.
+
+2007-01-11 Andrew Haley <aph@redhat.com>
+
+ * prims.cc (jdwpOptions) Fix deprecated cast from char[] constant
+ to char*.
+ * include/x86_64-signal.h (HANDLE_DIVIDE_OVERFLOW): Rewrite to fix
+ aliasing violation.
+
+2007-01-10 Tom Tromey <tromey@redhat.com>
+
+ * gnu/gcj/xlib/*.h: New files.
+ * gnu/awt/xlib/*.h: Likewise.
+ * classpath/lib/gnu/gcj/xlib: New class files.
+ * classpath/lib/gnu/awt/xlib: Likewise.
+
+2007-01-10 Tom Tromey <tromey@redhat.com>
+
+ * HACKING: Various updates.
+
+2007-01-10 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/natDouble.cc (toString): Added parens.
+ * gnu/gcj/io/shs.h (PROTO): Define.
+ * link.cc (resolve_pool_entry): Added missing braces.
+
+2007-01-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libgcj/30424
+ * sysdep/ia64/locks.h (read_barrier): New.
+ (write_barrier): New.
+
+2007-01-10 Gary Benson <gbenson@redhat.com>
+
+ * java/net/URL.java: Removed.
+ * sources.am, Makefile.in: Rebuilt.
+
+2007-01-10 Matthias Klose <doko@debian.org>
+
+ * Makefile.am (install-exec-hook): Support $(DESTDIR).
+ * Makefile.in: Regenerated.
+
+2007-01-05 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libjava.loader/loader.exp (gcj_loader_run): Find
+ dummy.class in srcdir.
+
+2007-01-03 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libjava.cni/cni.exp (gcj_cni_compile_cxx_to_o): Add -I
+ for srcdir.
+
+2007-01-03 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/*: Added many .jar and .h files.
+ * testsuite/libjava.special/special.exp
+ (gcj_special_try_compiler): New proc.
+ * testsuite/libjava.loader/loader.exp (gcj_loader_run): Don't
+ bytecompile source. Search for .jar files.
+ (gcj_loader_test_one): Don't look for MyLoader.java.
+ * testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_test_one): Don't
+ bytecompile sources or build headers.
+ (gcj_jvmti_run): Look for .jar files.
+ * testsuite/libjava.jni/jni.exp (gcj_jni_run): Compile .jar
+ files.
+ (gcj_jni_test_one): Don't bytecompile sources or build headers.
+ Set classpath when invoking gij.
+ (gcj_jni_invocation_test_one): Likewise.
+ * testsuite/libjava.cni/cni.exp (gcj_cni_test_one): Don't build
+ headers or bytecompile sources.
+ (gcj_cni_run): Use .jar files, not .java files.
+ * testsuite/libjava.lang/lang.exp: Compile .jar files.
+
+2007-01-02 Tom Tromey <tromey@redhat.com>
+
+ * configure: Rebuilt.
+ * configure.ac: Check for gjar.
+
+2007-01-02 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libjava.jacks/jacks.exp: Removed.
+ * testsuite/libjava.jacks/jacks.xfail: Removed.
+
@INTERPRETER_TRUE@ gnu/classpath/jdwp/util.lo \
@INTERPRETER_TRUE@ gnu/classpath/jdwp/value.lo gnu/gcj/jvmti.lo
am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \
- gnu/classpath/debug.lo gnu/gcj.lo gnu/gcj/convert.lo \
- gnu/gcj/io.lo gnu/gcj/runtime.lo gnu/gcj/util.lo \
- gnu/java/awt.lo gnu/java/awt/color.lo gnu/java/awt/dnd.lo \
- gnu/java/awt/font.lo gnu/java/awt/font/autofit.lo \
- gnu/java/awt/font/opentype.lo \
+ gnu/classpath/debug.lo gnu/classpath/toolkit.lo gnu/gcj.lo \
+ gnu/gcj/convert.lo gnu/gcj/io.lo gnu/gcj/runtime.lo \
+ gnu/gcj/util.lo gnu/java/awt.lo gnu/java/awt/color.lo \
+ gnu/java/awt/dnd.lo gnu/java/awt/font.lo \
+ gnu/java/awt/font/autofit.lo gnu/java/awt/font/opentype.lo \
gnu/java/awt/font/opentype/truetype.lo gnu/java/awt/image.lo \
gnu/java/awt/java2d.lo gnu/java/awt/peer.lo \
gnu/java/awt/peer/headless.lo gnu/java/awt/print.lo \
javax/accessibility.lo javax/activity.lo javax/crypto.lo \
javax/crypto/interfaces.lo javax/crypto/spec.lo \
javax/management.lo javax/management/loading.lo \
- javax/management/openmbean.lo javax/naming.lo \
+ javax/management/openmbean.lo javax/management/remote.lo \
+ javax/management/remote/rmi.lo javax/naming.lo \
javax/naming/directory.lo javax/naming/event.lo \
javax/naming/ldap.lo javax/naming/spi.lo javax/net.lo \
javax/net/ssl.lo javax/print.lo javax/print/attribute.lo \
javax/swing/table.lo javax/swing/text.lo \
javax/swing/text/html.lo javax/swing/text/html/parser.lo \
javax/swing/text/rtf.lo javax/swing/tree.lo \
- javax/swing/undo.lo javax/transaction.lo \
+ javax/swing/undo.lo javax/tools.lo javax/transaction.lo \
javax/transaction/xa.lo org/ietf/jgss.lo sun/awt.lo \
sun/misc.lo sun/reflect.lo sun/reflect/annotation.lo \
sun/reflect/misc.lo $(am__DEPENDENCIES_1)
classpath/gnu/classpath/jdwp/value/VoidValue.java
gnu_classpath_jdwp_value_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_value_source_files)))
+gnu_classpath_toolkit_source_files = \
+classpath/gnu/classpath/toolkit/DefaultDaemonThreadFactory.java
+
+gnu_classpath_toolkit_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_toolkit_source_files)))
gnu_gcj_source_files = \
gnu/gcj/Core.java \
gnu/gcj/RawData.java \
gnu_java_awt_font_source_files = \
classpath/gnu/java/awt/font/FontDelegate.java \
classpath/gnu/java/awt/font/FontFactory.java \
-classpath/gnu/java/awt/font/GNUGlyphVector.java
+classpath/gnu/java/awt/font/GNUGlyphVector.java \
+classpath/gnu/java/awt/font/OpenTypeFontPeer.java
gnu_java_awt_font_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_font_source_files)))
gnu_java_awt_font_autofit_source_files = \
gnu_java_awt_font_opentype_truetype_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_font_opentype_truetype_source_files)))
gnu_java_awt_image_source_files = \
+classpath/gnu/java/awt/image/AsyncImage.java \
+classpath/gnu/java/awt/image/ImageConverter.java \
classpath/gnu/java/awt/image/ImageDecoder.java \
classpath/gnu/java/awt/image/XBMDecoder.java
classpath/gnu/java/awt/java2d/CubicSegment.java \
classpath/gnu/java/awt/java2d/ImagePaint.java \
classpath/gnu/java/awt/java2d/LineSegment.java \
+classpath/gnu/java/awt/java2d/PixelCoverage.java \
classpath/gnu/java/awt/java2d/Pixelizer.java \
classpath/gnu/java/awt/java2d/PolyEdge.java \
classpath/gnu/java/awt/java2d/PolyEdgeComparator.java \
classpath/gnu/java/awt/java2d/ScanlineCoverage.java \
classpath/gnu/java/awt/java2d/Segment.java \
classpath/gnu/java/awt/java2d/ShapeCache.java \
+classpath/gnu/java/awt/java2d/ShapeWrapper.java \
+classpath/gnu/java/awt/java2d/TextCacheKey.java \
classpath/gnu/java/awt/java2d/TexturePaintContext.java
gnu_java_awt_java2d_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_java2d_source_files)))
gnu_java_awt_peer_x_source_files = \
classpath/gnu/java/awt/peer/x/GLGraphics.java \
-classpath/gnu/java/awt/peer/x/ImageConverter.java \
classpath/gnu/java/awt/peer/x/KeyboardMapping.java \
classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java \
classpath/gnu/java/awt/peer/x/XDialogPeer.java \
classpath/gnu/java/awt/peer/x/XEventPump.java \
-classpath/gnu/java/awt/peer/x/XFontPeer2.java \
+classpath/gnu/java/awt/peer/x/XFontPeer.java \
classpath/gnu/java/awt/peer/x/XFramePeer.java \
classpath/gnu/java/awt/peer/x/XGraphics2D.java \
classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java \
gnu_java_nio_channels_header_files = $(patsubst %.java,%.h,$(gnu_java_nio_channels_source_files))
gnu_java_nio_charset_source_files = \
classpath/gnu/java/nio/charset/ByteCharset.java \
+classpath/gnu/java/nio/charset/ByteDecodeLoopHelper.java \
+classpath/gnu/java/nio/charset/ByteEncodeLoopHelper.java \
classpath/gnu/java/nio/charset/Cp424.java \
classpath/gnu/java/nio/charset/Cp437.java \
classpath/gnu/java/nio/charset/Cp737.java \
classpath/gnu/java/util/Base64.java \
classpath/gnu/java/util/DoubleEnumeration.java \
classpath/gnu/java/util/EmptyEnumeration.java \
+classpath/gnu/java/util/LRUCache.java \
classpath/gnu/java/util/WeakIdentityHashMap.java \
classpath/gnu/java/util/ZoneInfo.java
classpath/javax/management/openmbean/TabularType.java
javax_management_openmbean_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_openmbean_source_files)))
+javax_management_remote_source_files = \
+classpath/javax/management/remote/NotificationResult.java \
+classpath/javax/management/remote/TargetedNotification.java
+
+javax_management_remote_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_remote_source_files)))
+javax_management_remote_rmi_source_files = \
+classpath/javax/management/remote/rmi/RMIConnection.java \
+classpath/javax/management/remote/rmi/RMIServer.java
+
+javax_management_remote_rmi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_remote_rmi_source_files)))
javax_naming_source_files = \
classpath/javax/naming/AuthenticationException.java \
classpath/javax/naming/AuthenticationNotSupportedException.java \
classpath/javax/swing/undo/UndoableEditSupport.java
javax_swing_undo_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_undo_source_files)))
+javax_tools_source_files = \
+classpath/javax/tools/Diagnostic.java \
+classpath/javax/tools/DiagnosticListener.java \
+classpath/javax/tools/FileObject.java
+
+javax_tools_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_tools_source_files)))
javax_transaction_source_files = \
classpath/javax/transaction/HeuristicCommitException.java \
classpath/javax/transaction/HeuristicMixedException.java \
gnu/awt/j2d.list \
gnu/classpath.list \
gnu/classpath/debug.list \
+ gnu/classpath/toolkit.list \
gnu/gcj.list \
gnu/gcj/convert.list \
gnu/gcj/io.list \
javax/management.list \
javax/management/loading.list \
javax/management/openmbean.list \
+ javax/management/remote.list \
+ javax/management/remote/rmi.list \
javax/naming.list \
javax/naming/directory.list \
javax/naming/event.list \
javax/swing/text/rtf.list \
javax/swing/tree.list \
javax/swing/undo.list \
+ javax/tools.list \
javax/transaction.list \
javax/transaction/xa.list \
org/ietf/jgss.list \
$(gnu_awt_j2d_header_files) \
$(gnu_classpath_header_files) \
$(gnu_classpath_debug_header_files) \
+ $(gnu_classpath_toolkit_header_files) \
$(gnu_gcj_header_files) \
$(gnu_gcj_convert_header_files) \
$(gnu_gcj_io_header_files) \
$(javax_management_header_files) \
$(javax_management_loading_header_files) \
$(javax_management_openmbean_header_files) \
+ $(javax_management_remote_header_files) \
+ $(javax_management_remote_rmi_header_files) \
$(javax_naming_header_files) \
$(javax_naming_directory_header_files) \
$(javax_naming_event_header_files) \
$(javax_swing_text_rtf_header_files) \
$(javax_swing_tree_header_files) \
$(javax_swing_undo_header_files) \
+ $(javax_tools_header_files) \
$(javax_transaction_header_files) \
$(javax_transaction_xa_header_files) \
$(org_ietf_jgss_header_files) \
org-xml.lo
property_files = \
- classpath/resource/gnu/classpath/tools/appletviewer/messages.properties \
- classpath/resource/gnu/classpath/tools/common/Messages.properties \
- classpath/resource/gnu/classpath/tools/getopt/Messages.properties \
- classpath/resource/gnu/classpath/tools/jar/messages.properties \
- classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties \
- classpath/resource/gnu/classpath/tools/jarsigner/messages.properties \
- classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties \
- classpath/resource/gnu/classpath/tools/keytool/messages.properties \
- classpath/resource/gnu/classpath/tools/native2ascii/messages.properties \
- classpath/resource/gnu/classpath/tools/orbd/messages.properties \
- classpath/resource/gnu/classpath/tools/rmic/messages.properties \
- classpath/resource/gnu/classpath/tools/rmid/messages.properties \
- classpath/resource/gnu/classpath/tools/rmiregistry/messages.properties \
- classpath/resource/gnu/classpath/tools/serialver/messages.properties \
- classpath/resource/gnu/classpath/tools/tnameserv/messages.properties \
+ classpath/resource/gnu/java/awt/font/fonts.properties \
classpath/resource/gnu/java/awt/peer/gtk/font.properties \
classpath/resource/gnu/java/awt/peer/x/fonts.properties \
+ classpath/resource/gnu/java/awt/peer/x/xfonts.properties \
classpath/resource/gnu/java/locale/LocaleInformation.properties \
classpath/resource/gnu/java/locale/LocaleInformation_aa.properties \
classpath/resource/gnu/java/locale/LocaleInformation_aa_DJ.properties \
classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties \
classpath/resource/javax/swing/text/html/default.css \
classpath/resource/org/ietf/jgss/MessagesBundle.properties \
- classpath/resource/sun/rmi/rmic/messages.properties \
- classpath/resource/com/sun/tools/javac/messages.properties \
classpath/resource/META-INF/services/java.util.prefs.PreferencesFactory \
classpath/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \
classpath/resource/META-INF/services/javax.sound.midi.spi.MidiDeviceProvider \
-include gnu/classpath/jdwp/value.deps
+gnu/classpath/toolkit.list: $(gnu_classpath_toolkit_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/gnu/classpath/toolkit/*.class > gnu/classpath/toolkit.list
+
+-include gnu/classpath/toolkit.deps
+
gnu/gcj.list: $(gnu_gcj_source_files)
@$(mkinstalldirs) $(dir $@)
echo $(srcdir)/classpath/lib/gnu/gcj/*.class > gnu/gcj.list
-include javax/management/openmbean.deps
+javax/management/remote.list: $(javax_management_remote_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/javax/management/remote/*.class > javax/management/remote.list
+
+-include javax/management/remote.deps
+
+javax/management/remote/rmi.list: $(javax_management_remote_rmi_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/javax/management/remote/rmi/*.class > javax/management/remote/rmi.list
+
+-include javax/management/remote/rmi.deps
+
javax/naming.list: $(javax_naming_source_files)
@$(mkinstalldirs) $(dir $@)
echo $(srcdir)/classpath/lib/javax/naming/*.class > javax/naming.list
-include javax/swing/undo.deps
+javax/tools.list: $(javax_tools_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/javax/tools/*.class > javax/tools.list
+
+-include javax/tools.deps
+
javax/transaction.list: $(javax_transaction_source_files)
@$(mkinstalldirs) $(dir $@)
echo $(srcdir)/classpath/lib/javax/transaction/*.class > javax/transaction.list
# with or without modifications, as long as this notice is preserved.
AC_DEFUN([AM_PROG_GCJ],[
-AC_CHECK_PROGS(GCJ, [gcj gcj-3.2 gcj-3.1 gcj-3.0 gcj-2.95], gcj)
+AC_CHECK_PROGS(GCJ, gcj, gcj)
test -z "$GCJ" && AC_MSG_ERROR([no acceptable gcj found in \$PATH])
if test "x${GCJFLAGS-unset}" = xunset; then
GCJFLAGS="-g -O2"
Audrius Meskauskas (audriusa@Bioinformatics.org)
Raif S. Naffah (raif@swiftdsl.com.au)
Aaron M. Renn (arenn@urbanophile.com)
+Ian Rogers (ian.rogers@manchester.ac.uk)
Andrew Selkirk (aselkirk@sympatico.ca)
+Robert Schuster (robertschuster@fsfe.org)
Christian Thalinger (twisti@complang.tuwien.ac.at)
Andreas Tobler (a.tobler@schweiz.org)
Mario Torre (neugens@limasoftware.net)
* scripts/Makefile.in: Regenerate.
* tools/Makefile.in: Regenerate.
-2008-04-18 Paolo Bonzini <bonzini@gnu.org>
+2008-06-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
- PR bootstrap/35457
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
-
-2008-04-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-
- * lib/gen-classlist.sh.in: Avoid grepping each omission, by
- building an awk script with a hash for literal files, and
- awk regular expressions for the rest.
- * configure.ac: Call AC_PROG_AWK.
- * configure: Regenerate.
-
- * m4/gcc_attribute.m4 (GCC_ATTRIBUTE): Fix cache variable name.
- * tools/Makefile.am (gappletviewer, gjarsigner, gkeytool, gjar)
- (gnative2ascii, gserialver, gjavah, grmiregistry, gtnameserv)
- (gorbd, grmid, grmic) [!CREATE_WRAPPERS]: Add stub dependencies
- for these scripts, to trick automake into hiding the respective
- rules for the programs below the CREATE_WRAPPERS conditional.
- * aclocal.m4: Regenerate.
- * configure: Likewise.
- * Makefile.in: Likewise.
- * native/jni/Makefile.in: Likewise.
- * native/jni/classpath/Makefile.in: Likewise.
- * native/jni/gstreamer-peer/Makefile.in: Likewise.
- * native/jni/midi-dssi/Makefile.in: Likewise.
- * native/jni/gconf-peer/Makefile.in: Likewise.
- * native/jni/java-io/Makefile.in: Likewise.
- * native/jni/native-lib/Makefile.in: Likewise.
- * native/jni/java-util/Makefile.in: Likewise.
- * native/jni/java-lang/Makefile.in: Likewise.
- * native/jni/midi-alsa/Makefile.in: Likewise.
- * native/jni/java-nio/Makefile.in: Likewise.
- * native/jni/java-net/Makefile.in: Likewise.
- * native/jni/xmlj/Makefile.in: Likewise.
- * native/jni/qt-peer/Makefile.in: Likewise.
- * native/jni/gtk-peer/Makefile.in: Likewise.
- * native/Makefile.in: Likewise.
- * native/jawt/Makefile.in: Likewise.
- * native/fdlibm/Makefile.in: Likewise.
- * native/plugin/Makefile.in: Likewise.
- * resource/Makefile.in: Likewise.
- * scripts/Makefile.in: Likewise.
- * tools/Makefile.in: Likewise.
- * doc/Makefile.in: Likewise.
- * doc/api/Makefile.in: Likewise.
- * lib/Makefile.in: Likewise.
- * external/Makefile.in: Likewise.
- * external/jsr166/Makefile.in: Likewise.
- * external/sax/Makefile.in: Likewise.
- * external/w3c_dom/Makefile.in: Likewise.
- * external/relaxngDatatype/Makefile.in: Likewise.
- * include/Makefile.in: Likewise.
- * examples/Makefile.in: Likewise.
-
-2008-03-10 Jim Meyering <meyering@redhat.com>
-
- Don't leak upon failed realloc.
- * native/jni/classpath/jcl.c (JCL_realloc): Upon failed realloc,
- free the original buffer before throwing the exception.
+ * configure.ac: Set version to 0.97.2.
+ * NEWS: Add 0.97.2.
-2008-03-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+2008-05-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * doc/cp-hacking.texinfo: Fix spacing after periods.
- * doc/cp-tools.texinfo: Likewise.
- * doc/cp-vmintegration.texinfo: Likewise.
+ * vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java:
+ Remove use of 1.5 language constructs.
- * doc/cp-hacking.texinfo: Fix some typos.
- * doc/cp-tools.texinfo: Likewise.
- * doc/cp-vmintegration.texinfo: Likewise.
+2008-06-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2008-01-27 Bernhard Fischer <rep.dot.nop@gmail.com>
+ * tools/gnu/classpath/tools/common/ClasspathToolParser.java:
+ Fixed indentation and changed to use OptionException.
+ * tools/gnu/classpath/tools/getopt/OptionException.java:
+ (OptionException(String,Throwable)): Added.
- * java/util/SimpleTimeZone.java (SimpleTimeZone): Fix typo in comment.
- * gnu/CORBA/GIOP/v1_2/RequestHeader.java (RequestHeader): Fix typo in
- exception message.
-
-2008-01-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-
- * doc/README.jaxp: Fix typos.
-
-2008-01-24 Tom Tromey <tromey@redhat.com>
-
- * resource/gnu/classpath/tools/native2ascii/messages.properties
- (Native2ASCII.ReversedHelpCompat): New.
- * tools/gnu/classpath/tools/native2ascii/Native2ASCII.java
- (createParser): Add -reverse. Update -reversed.
+2008-06-03 Robert Schuster <robertschuster@fsfe.org>
-2008-01-21 Luciano Chavez <lnx1138@us.ibm.com>
+ * tools/gnu/classpath/tools/jar/Main.java:
+ (run): Call different ClasspathToolParser.parse() variant.
+ (getParser): Changed return type to ClasspathToolParser.
+ * tools/gnu/classpath/tools/javah/GcjhMain.java:
+ (getParser): Changed return type to ClasspathToolParser.
+ * tools/gnu/classpath/tools/javah/Main.java:
+ (getParser): Changed return type to ClasspathToolParser.
+ * tools/gnu/classpath/tools/getopt/Parser.java: Make 'programName'
+ protected.
+ * tools/gnu/classpath/tools/common/ClasspathToolParser.java:
+ (parse(String[], FileArgumentCallback,boolean): New method.
+ (parse(String[], boolean): New method.
+ (parseFileList): New method.
+ (parseLine): New method.
+ (AtFileArgumentCallback): New inner class.
- PR libgcj/34369:
- * java/net/URI.java (relativize): Check initial segment for
- trailing "/".
+2008-06-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-12-05 Thomas Fitzsimmons <fitzsim@redhat.com>
+ * tools/gnu/classpath/tools/getopt/OptionException.java,
+ * tools/gnu/classpath/tools/jar/Main.java:
+ Revert previous changes to allow Schuster's patch to
+ do the same.
- * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
- (isWindowUnderMouse): New method.
- * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h:
- Regenerate.
- * gnu/java/awt/peer/gtk/GtkComponentPeer.java
- (getLocationOnScreen): Move WindowPeer section to...
- * gnu/java/awt/peer/gtk/GtkWindowPeer.java (getLocationOnScreen):
- New method.
- * gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java
- (isWindowUnderMouse): Implement.
- * java/awt/Component.java (getMousePosition): New method.
- (getMousePositionHelper): Likewise.
- (mouseOverComponent): Likewise.
- * java/awt/Container.java (getMousePosition): New method.
- (mouseOverComponent): Likewise.
- * classpath/lib/java/awt/Component.class,
- classpath/lib/java/awt/Component$BltBufferStrategy.class,
- classpath/lib/java/awt/Container$GfxPaintAllVisitor.class,
- classpath/lib/java/awt/Component$AccessibleAWTComponent
- $AccessibleAWTFocusHandler.class,
- classpath/lib/java/awt/Component$FlipBufferStrategy.class,
- classpath/lib/java/awt/Container$GfxVisitor.class,
- classpath/lib/java/awt/Component$AccessibleAWTComponent
- $AccessibleAWTComponentHandler.class,
- classpath/lib/java/awt/Container$AccessibleAWTContainer
- $AccessibleContainerHandler.class,
- classpath/lib/java/awt/Container.class,
- classpath/lib/java/awt/Container$AccessibleAWTContainer.class,
- classpath/lib/java/awt/Container$GfxPrintAllVisitor.class,
- classpath/lib/java/awt/Component$AccessibleAWTComponent.class,
- classpath/lib/java/awt/Container$GfxPaintVisitor.class,
- classpath/lib/java/awt/Container$GfxPrintVisitor.class,
- classpath/lib/java/awt/Component$HeavyweightInLightweightListener.class,
- classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer.class,
- classpath/lib/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.class,
- classpath/lib/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.class,
- classpath/lib/gnu/java/awt/peer/gtk/GtkWindowPeer.class,
- classpath/lib/gnu/java/awt/peer/gtk/GtkComponentPeer
- $RepaintTimerTask.class:
- Regenerate.
-
-2007-10-01 Alexandre Oliva <aoliva@redhat.com>
-
- * scripts/check_jni_methods.sh: Don't depend on diff -b ignoring
- a single trailing whitespace.
-
-2007-08-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * java/util/EnumSet.java:
- Documented.
- (complementOf(EnumSet)): Fixed to flip only
- the bits used by the enumset.
-
-2007-07-31 Dalibor Topic <robilad@kaffe.org>
-
- PR 32844
- * java/util/EnumSet.java:
- Made class abstract per API spec.
- (size, iterator, add, addAll, clear, contains,
- containsAll, remove, removeAll, retainAll) Moved
- into an anonymous inner class in of(T).
- (allOf, noneOf, copyOf, of, range) Made more
- implementation independent.
- (of(T)) return an instance of an anonymous class
- implementing EmptySet.
-
-2007-07-28 Matthias Klose <doko@ubuntu.com>
-
- * include/jvmti.h(jniNativeInterface): Rename type.
-
-2007-07-24 Tom Tromey <tromey@redhat.com>
-
- PR java/32862:
- * java/util/EnumMap.java (get): Special case emptySlot.
- (clone): Rewrote.
-
-2007-07-23 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * gnu/java/nio/charset/ISO_8859_1.java: Added ISO8859-1 to
- aliases.
-
-2007-07-23 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * vm/reference/sun/misc/Unsafe.java (unpark): Changed signature to
- be compatible with OpenJDK.
-
-2007-07-13 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/java2d/AbstractGraphics2D.java
- (clip(Shape)): Call setClip when the clip changes.
- (drawImage): Add translation.
- (drawLine): Add translation.
- * gnu/java/awt/peer/x/PixmapVolatileImage.java
- (getPixmap): New method.
- * gnu/java/awt/peer/x/XEventPump.java
- (XEventPump): Name thread. Start as daemon thread.
- * gnu/java/awt/peer/x/XGraphics2D.java
- (rawDrawImage): Special handling for PixmapVolatileImage.
- (rawDrawLine): Don't add translation here. This is done in
- the superclass.
- (rawFillRect): Don't add translation here. This is done in
- the superclass.
- (renderScanline): Added null check.
-
-2007-07-13 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/x/PixmapVolatileImage.java: New class.
- * gnu/java/awt/peer/x/XGraphicsConfiguration.java
- (createCompatibleImage(int,int)): Delegate to the 3-int overload.
- (createCompatibleImage(int,int,int)): Implemented. Using
- the ZPixmapDataBuffer for OPAQUE images.
- (createCompatibleVolatileImage(int,int)): Delegate to the 3-int
- overload.
- (createCompatibleVolatileImage(int,int,int)): Implemented. Using
- PixmapVolatileImage.
- * gnu/java/awt/peer/x/XWindowPeer.java
- (createImage): Return a PixmapVolatileImage (for now).
- (createVolatileImage): Implemented, using PixmapVolatileImage.
- * gnu/java/awt/peer/x/ZPixmapDataBuffer.java
- New class.
-
-2007-07-10 Roman Kennke <roman@kennke.org>
-
- PR 32645
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
- (copyPixbuf): Swap asserts.
-
-2007-07-09 Chris Burdess <dog@gnu.org>
-
- Fixes #32672
- * gnu/xml/dom/DomElement.java,
- * gnu/xml/dom/DomNamedNodeMap.java: don't check owner in
- setNamedNode when cloning.
-
-2007-07-08 Mario Torre <neugens@limasoftware.net>
-
- * gnu/javax/sound/sampled/gstreamer: new package hierarchy.
- * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java: new file.
- * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java:
- likewise.
- * gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java: likewise.
- * gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java: likewise.
- * gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java: likewise.
- * gnu/javax/sound/AudioSecurityManager.java: likewise.
- * gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java: likewise.
- * gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java: likewise.
- * gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java: likewise.
- * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java: likewise.
- * resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in:
- likewise.
- * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in:
- likewise.
- * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider:
- likewise.
- * native/jni/gstreamer-peer/gstclasspathsrc.c: likewise.
- * native/jni/gstreamer-peer/gstclasspathsrc.h: likewise.
- * native/jni/gstreamer-peer/gstinputstream.c: likewise.
- * native/jni/gstreamer-peer/gstinputstream.h: likewise.
- * native/jni/gstreamer-peer/GStreamerIOPeer.c: likewise.
- * native/jni/gstreamer-peer/Makefile.am: likewise.
- * native/jni/gstreamer-peer/.cvsignore: likewise.
- * include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h:
- likewise.
- * include/Makefile.am: add gstreamer generated headers.
- * configure.ac: add gstreamer sound backend configuration.
- The backend is currently disabled by default.
- * native/jni/Makefile.am: code to allow compilation of the gstreamer
- sound backend.
- * javax/sound/sampled/spi/MixerProvider.java (isMixerSupported):
- indentation fixes.
- * javax/sound/sampled/AudioFormat.java (toString): fix method to display
- informations only when available.
- * javax/sound/sampled/DataLine.java:
- (Info.isFormatSupported): indentation fixes.
- (Info): indentation fixes.
- (Info.toString): indentation fixes.
- (Info.matches): indentation fixes.
-
-2007-07-03 Tania Bento <tbento@redhat.com>
+2008-06-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/lang/Integer.java:
- (parseInt(String,int,boolean)): Throw NumberFormatException if
- String is just "+".
-
-2007-07-01 Chris Burdess <dog@gnu.org>
-
- * gnu/xml/transform/WithParam.java: Handle case where content is
- empty.
-
-2007-06-28 Tom Tromey <tromey@redhat.com>
-
- * include/jni.h: Fixed local variables.
-
-2007-06-26 Ito Kazumitsu <kaz@maczuka.gcd.org>
-
- * ChangeLog: Correction of a bug fix number.
-
-2007-06-25 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/ClasspathFontPeer.java
- (canDisplay): Take character as integer codepoint.
- * gnu/java/awt/peer/gtk/GdkFontPeer.java
- (canDisplay): Take character as integer codepoint.
- * gnu/java/awt/peer/gtk/GtkComponentPeer.java
- (postMouseEvent): Use MouseEvent constructor with absolute coordinates
- to avoid deadlock (over getLocationOnScreen()).
- * gnu/java/awt/peer/gtk/VolatileImageGraphics.java
- (getDeviceConfiguration): Fall back to the default configuration
- if the component is not set.
- * gnu/java/awt/peer/qt/QtFontMetrics.java
- (canDisplay): Take character as integer codepoint.
- * gnu/java/awt/peer/qt/QtFontPeer.java
- (canDisplay): Take character as integer codepoint.
- * gnu/java/awt/peer/x/XFontPeer2.java
- (canDisplay): Take character as integer codepoint.
- * include/gnu_java_awt_peer_qt_QtFontMetrics.h
- (canDisplay): Take character as integer codepoint.
- * java/awt/Font.java
- (DIALOG): New constant.
- (DIALOG_INPUT): New constant.
- (MONOSPACED): New constant.
- (SANS_SERIF): New constant.
- (SERIF): New constant.
- (Font(Font)): New constructor.
- (canDisplay(char)): Use new canDisplay(int) method.
- (canDisplay(int)): New method.
- (hasLayoutAttributes): New method.
- * java/awt/event/MouseEvent.java
- (absX,absY): New fields.
- (MouseEvent): New constructor with absolute coordinates.
- (getLocationOnScreen): New method.
- (getXOnScreen): New method.
- (getYOnScreen): New method.
- * native/jni/qt-peer/qtfontmetrics.cpp
- (canDisplay): Take character as integer codepoint.
-
-2007-06-25 Mark Wielaard <mark@klomp.org>
-
- * native/jni/native-lib/cpnet.c
- (cpnet_aton) Moved variable declaration of inet6_addr so it is
- actually in the scope of its use.
-
-2007-06-25 Dalibor Topic <robilad@kaffe.org>
-
- * native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
- (THROW_NO_IPV6): New macro.
- (Java_gnu_java_net_VMPlainSocketImpl_bind6) Conditionally
- build code if IPv6 facilities are available, otherwise
- throw an error.
- (Java_gnu_java_net_VMPlainSocketImpl_setMulticastInterface6,
- Java_gnu_java_net_VMPlainSocketImpl_join6,
- Java_gnu_java_net_VMPlainSocketImpl_leave6,
- Java_gnu_java_net_VMPlainSocketImpl_joinGroup6,
- Java_gnu_java_net_VMPlainSocketImpl_leaveGroup6)
- Use THROW_NO_IPV6.
-
- * native/jni/java-net/java_net_VMInetAddress.c
- (Java_java_net_VMInetAddress_getHostByAddr,
- Java_java_net_VMInetAddress_getHostByName,
- Java_java_net_VMInetAddress_aton) Build IPv6 dependant
- code conditionally on IPv6 facilities being available.
- Switched if-else blocks where necessary to allow that.
-
- * native/jni/java-net/javanet.c
- (_javanet_get_ip_netaddr) Build IPv6 dependant code conditionally
- on IPv6 facilities being available.
-
- * native/jni/native-lib/cpnet.c
- (cpnet_getHostByName, cpnet_getHostByAddr) Build IPv6 dependant
- code conditionally on IPv6 facilities being available.
- (cpnet_aton) Moved variable declaration of inet6_addr to the scope
- of its use. Build IPv6 dependant code conditionally
- on IPv6 facilities being available.
-
- * native/jni/native-lib/cpnet.h (cpnet_newIPV6Address,
- cpnet_isIPV6Address, cpnet_IPV6AddressToBytes,
- cpnet_bytesToIPV6Address): Make IPv6 dependant utility functions
- available conditionally on IPv6 facilities being available.
-
-2007-06-25 Dalibor Topic <robilad@kaffe.org>
-
- * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAC): If the user passes an
- explicit argument to configure, just use it, and don't attempt to
- run AC_CHECK_PROG. This makes --with-javac="javac -J-Xmx512M" work.
-
-2007-06-25 Dalibor Topic <robilad@kaffe.org>
-
- * configure.ac: Check for MSG_WAITALL, since it does not exist on
- Cygwin.
-
- * native/jni/java-nio/gnu_java_nio_VMChannel.c
- (Java_gnu_java_nio_VMChannel_receive): Define MSG_WAITALL as 0 if
- it does not exist.
-
-2007-06-24 Ito Kazumitsu <kaz@maczuka.gcd.org>
-
- Fixes bug #31927
- * native/jni/java-nio/gnu_java_nio_VMChannel.c
- (Java_gnu_java_nio_VMChannel_available): Retry using fstat if ioctl
- fails with ENOTTY.
-
-2007-06-22 Tania Bento <tbento@redhat.com>
-
- * java/util/Currency.java:
- (getInstance (Locale)): Check that the country of the
- locale given is valid. If it is not, throw an
- IllegalArgumentException.
-
-2007-06-22 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/GLightweightPeer.java
- * gnu/java/awt/peer/gtk/GdkRobotPeer.java
- * gnu/java/awt/peer/gtk/GtkCompoonentPeer.java
- * gnu/java/awt/peer/gtk/GtkFramePeer.java
- * gnu/java/awt/peer/gtk/GtkWindowPeer.java
- * gnu/java/awt/peer/qt/QtComponentPeer.java
- * gnu/java/awt/peer/qt/QtFramePeer.java
- * gnu/java/awt/peer/qt/QtWindowPeer.java
- * gnu/java/awt/peer/swing/SwingComponentPeer.java
- * gnu/java/awt/peer/swing/SwingWindowPeer.java
- * gnu/java/awt/peer/x/XFramePeer.java:
- Removed @Override annotations from some interface implementation
- methods to ensure 1.5 compatibility.
-
-2007-06-22 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * include/jni.h (JNINativeInterface): Renamed to
- JNINativeInterface_, added const to arguments where necessary.
- (JNIInvokeInterface): Renamed to JNIInvokeInterface_.
-
-2007-06-22 Roman Kennke <roman@kennke.org>
-
- * sun/awt/CausedFocusEvent.java: New class. Needed for compatibility
- in java.awt.peer.
- * java/awt/Dialog.java
- (ModalExclusionType): New enum.
- (ModalityType): New enum.
- * java/awt/Toolkit.java
- (isModalExclusionTypeSupported): New abstract method.
- (isModalityTypeSupported): New abstract method.
- * java/awt/peer/ComponentPeer.java
- (requestFocus): New method.
- * java/awt/peer/FramePeer.java
- (getBoundsPrivate): New method.
- * java/awt/peer/RobotPeer.java
- (dispose): New method.
- * java/awt/peer/WindowPeer.java
- (setAlwaysOnTop): New method.
- (updateFocusableWindowState): New method.
- (setModalBlocked): New method.
- (updateMinimumSize): New method.
- (updateIconImages): New method.
- * gnu/java/awt/peer/GLightweightPeer.java
- (requestFocus): New method.
- * gnu/java/awt/peer/gtk/GdkRobotPeer.java
- (dispose): New method.
- * gnu/java/awt/peer/gtk/GtkComponentPeer.java
- (requestFocus): New method.
- * gnu/java/awt/peer/gtk/GtkFramePeer.java
- (getBoundsPrivate): New method.
- * gnu/java/awt/peer/gtk/GtkToolkit.java
- (isModalExclusionTypeSupported): New method.
- (isModalityTypeSupported): New method.
- * gnu/java/awt/peer/gtk/GtkWindowPeer.java
- (updateIconImages): New method.
- (updateMinimumSize): New method.
- (setModalBlocked): New method.
- (updateFocusableWindowState): New method.
- (setAlwaysOnTop): New method.
- * gnu/java/awt/peer/headless/HeadlessToolkit.java
- (isModalExclusionTypeSupported): New method.
- (isModalityTypeSupported): New method.
- * gnu/java/awt/peer/qt/QtComponentPeer.java
- (requestFocus): New method.
- * gnu/java/awt/peer/qt/QtFramePeer.java
- (getBoundsPrivate): New method.
- * gnu/java/awt/peer/qt/QtToolkit.java
- (isModalExclusionTypeSupported): New method.
- (isModalityTypeSupported): New method.
- * gnu/java/awt/peer/qt/QtWindowPeer.java
- (updateIconImages): New method.
- (updateMinimumSize): New method.
- (setModalBlocked): New method.
- (updateFocusableWindowState): New method.
- (setAlwaysOnTop): New method.
- * gnu/java/awt/peer/swing/SwingComponentPeer.java
- (requestFocus): New method.
- * gnu/java/awt/peer/swing/SwingToolkit.java
- (isModalExclusionTypeSupported): New method.
- (isModalityTypeSupported): New method.
- * gnu/java/awt/peer/swing/SwingWindowPeer.java
- (updateIconImages): New method.
- (updateMinimumSize): New method.
- (setModalBlocked): New method.
- (updateFocusableWindowState): New method.
- (setAlwaysOnTop): New method.
- * gnu/java/awt/peer/x/XFramePeer.java
- (getBoundsPrivate): New method.
- * gnu/java/awt/peer/x/XToolkit.java
- (isModalExclusionTypeSupported): New method.
- (isModalityTypeSupported): New method.
-
-2007-06-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * tools/Makefile.am:
- Compile in com.sun.tools.javah
- * tools/com/sun/tools/javah/Main.java:
- Javah Sun-->Classpath wrapper.
-
-2007-06-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+ (parseInt(String, int, boolean)): Disallow "-+".
- * javax/swing/text/html/parser/AttributeList.java (getValues):
- Check if values is null.
+2008-05-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-06-21 Roman Kennke <roman@kennke.org>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c:
- Fix some type signatures.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c:
- Fix intendation.
-
-2007-06-21 Jeroen Frijters <jeroen@frijters.net>
-
- * java/io/ObjectStreamClass.java (getClassUID): Return 0L for
- enums and proxies.
-
-2007-06-21 Jeroen Frijters <jeroen@frijters.net>
-
- * java/net/URLClassLoader.java
- (URLClassLoader(URL[],ClassLoader,URLStreamHandlerFactory):
- Add factory to cache before calling addURLS.
- (run): Don't call initCause() on ClassNotFoundException.
-
-2007-06-21 Jeroen Frijters <jeroen@frijters.net>
-
- Fixes #32356
- * java/lang/reflect/Array.java
- (newInstance(Class,int[])): Call createMultiArray correctly.
- (createMultiArray): Fixed dimensions processing order.
-
-2007-06-21 Jeroen Frijters <jeroen@frijters.net>
-
- * gnu/java/net/loader/URLLoader.java
- (URLLoader(URLClassLoader,URLStreamHandlerCache,
- URLStreamHandlerFactory,URL,URL)): Disabiguate CodeSource constructor
- invocation.
- * java/awt/AWTKeyStroke.java
- (LinkedHashMap.removeEldestEntry): Use Map.Entry to fix compile
- error when compiled against OpenJDK java.util package.
- * java/awt/AlphaComposite.java
- (LinkedHashMap.removeEldestEntry): Use Map.Entry to fix compile
- error when compiled against OpenJDK java.util package.
-
-2007-06-21 Jeroen Frijters <jeroen@frijters.net>
-
- * gnu/java/security/Engine.java
- (getInstance(String,String,Provider,Object[]): Use correctly cased
- property name.
-
-2007-07-19 Keith Seitz <keiths@redhat.com>
-
- * classpath/gnu/classpath/jdwp/value/StringValue.java
- (StringValue): Tag of StringValue is STRING not OBJECT.
- (write): String values are written to the wire as tag byte
- and object ID, not JdwpString.
-
-2007-07-19 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
- (executeInvokeMethod): No need to use ValueFactory any more;
- MethodResult.getReturnedValue now returns a Value.
- (executeNewInstance): Double-check that return result is
- an ObjectValue; throw JdwpInternalErrorException if it is not.
- (invokeMethod): Method IDs come from VMMethod, not VMIdManager.
- Arguments are Values not Objects.
- Use ValueFactory to create arguments.
- Pass invocation options to VMVirtualMachine.executeMethod.
- Don't do any thread suspend/resume work: VMVM.executeMethod
- will take care of it.
- * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java
- (executeInvokeMethod): Method IDs come from VMMethod, not
- VMIdManager.
- Arguments should be Values instead of Objects.
- Use ValueFactory to create Values.
- Remove specific option handling and pass options to
- VMVirtualMachine.executeMethod.
- Remove thread suspension.
- Use MethodResult.getReturnedValue to get method's result.
- * gnu/classpath/jdwp/util/MethodResult.java
- (returnedValue): Change type to Value.
- (thrownException): Change type to Throwable.
- (resType): Remove.
- (MethodResult): New constructor.
- (setReturnedValue): Remove.
- (SetThrownException): Remove.
- (getResultType): Remove.
- (setResultType): Remove.
- * gnu/classpath/jdwp/value/ObjectValue.java (getValue):
- New method.
- * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
- (executeMethod): Replace "nonVirtual" parameter with more
- generic "options" parameter.
- Replace java.lang.reflect.Method parameter with VMMethod.
- Replace Objet[] parameter with Value[] parameter.
-
-2007-07-10 Dalibor Topic <robilad@kaffe.org>
-
- * configure.ac (FOUND_CACAO): Removed.
-
-2007-06-01 Robin Garner <robin.garner@anu.edu.au>
-
- Fixes #32162
- * gnu/xml/dom/DomNode.java: Correct concurrency problem when deep
- cloning nodes.
-
-2007-05-30 Mark Wielaard <mark@klomp.org>
-
- Fixes bug #32030 reported by Steve.Blackburn@anu.edu.au
- * native/jni/java-nio/gnu_java_nio_VMChannel.c
- (Java_gnu_java_nio_VMChannel_open): Only set O_TRUNC when
- CPNIO_APPEND is not, but O_WRONLY is set.
-
-2007-05-25 Robert Schuster <robertschuster@fsfe.org>
+ Reported by Nicolas Geoffray <nicolas.geoffray@menlina.com>
+ * java/lang/Integer.java:
+ (parseInt(String,int,boolean)): Parse +x
+ as x, not -x.
- * gnu/java/awt/peer/x/XGraphics2D.java:
- (rawDrawLine): Added addition of translation.
- (rawFillRect): Dito.
-
-2007-05-25 Robert Schuster <robertschuster@fsfe.org>
-
- * gnu/java/awt/font/opentype/OpenTypeFont.java:
- (getGlyphIndex): Call getGlyphCharMap() instead of
- accessing cmap field directly.
-
-2007-05-24 Ito Kazumitsu <kaz@maczuka.gcd.org>
-
- * native/jni/java-nio/gnu_java_nio_VMChannel.c
- (Java_gnu_java_nio_VMChannel_available): Use fstat or select as an
- alternative to ioctl.
- * native/jni/native-lib/cpio.c(cpio_availableBytes): Corrected typo.
-
-2007-05-24 Roman Kennke <roman@kennke.org>
-
- * gnu/java/math/Fixed.java
- (trunc): New method.
-
-2007-05-24 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/java2d/AbstractGraphics2D.java
- (fillShape): Pass rendering hints to scanline converter.
- * gnu/java/awt/java2d/ScanlineConverter.java
- (ONE): New constant for the number 1 as fixed point number.
- (Y_RESOLUTION): New constant for the Y resolution.
- (doScanline): Handle the Y resolution.
- (renderShape): Accept rendering hints.
- (setResolution): Adjust maximum resolution with Y resolution.
- * gnu/java/awt/java2d/ScanlineCoverage.java
- (Iterator.handledPixelCoverage): New field.
- (Iterator.next): Handle single pixel coverage.
- (Iterator.hasNext): Handle single pixel coverage.
- (Iterator.reset): Reset single pixel coverage.
- (Range.toString): New method.
- (Coverage.pixelCoverage): New field.
- (add): Include Y (pixel) coverage.
- (findOrInsert): Reset Y coverage in reused entries.
-
-2007-05-24 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/java2d/ScanlineCoverage.java
- (Iterator): New class.
- (Range): New class.
- (Coverage.covDelta): Made field package private.
- (Coverage.xPos): Made field package private.
- (iterator): New field. Stores the iterator that is reused.
- (ScanlineCoverage): Initialize iterator.
- (assertion): Removed.
- (isEmpty): Refined conditions.
- (iterate): Return Iterator instance.
- (next): Removed. This is done by the Iterator class now.
- (test): Removed.
- * gnu/java/awt/java2d/ScanlineConverter.java
- (main): Removed.
- * gnu/java/awt/peer/x/XGraphics2D.java
- (renderScanline): Adjust to new coverage iterator stuff.
- * gnu/java/awt/java2d/AbstractGraphics2D.java
- (renderScanline): Adjust to new coverage iterator stuff.
-
-2007-05-23 Jeroen Frijters <jeroen@frijters.net>
-
- * java/util/Arrays.java
- (copyOfRange(T,int,int)): Fixed to instantiate right array type.
-
-2007-05-22 Robert Schuster <robertschuster@fsfe.org>
-
- * gnu/java/awt/peer/x/XEventQueue.java:
- (handleEvent): Calculate modifier value for mouse presse
- and release events, clip button values.
- (buttonToModifier): New method.
- * gnu/java/awt/peer/x/KeyboardMapping.java:
- (mapModifiers): Added cases for alt gr and the meta key.
-
-2007-05-22 Robert Schuster <robertschuster@fsfe.org>
-
- * gnu/java/awt/peer/x/XEventQueue.java:
- (handleEvent): Use Input.event_window_id for
- key presses/releases.
-
-2007-05-22 Robert Schuster <robertschuster@fsfe.org>
-
- * gnu/java/awt/peer/x/XEventQueue.java:
- (handleEvent): Use Input.event_window_id instead of
- Input.child_window_id for mouse presses/releases &
- movement.
-
-2007-05-22 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/x/XFontPeer2.java
- (XFontMetrics.charWidth): Use cached Point2D instance.
- * gnu/java/awt/peer/x/XGraphics2D.java
- (renderScanline): New method. Renders a scanline according to
- the coverage information.
- (setPaint): Call super, so that the state is updated correctly.
-
-2007-05-19 Andreas Tobler <a.tobler@schweiz.org>
-
- PR libgcj/31659
- * m4/ax_create_stdint_h.m4: Apply patch from PR31659.
-
-2007-05-18 Andreas Tobler <a.tobler@schweiz.org>
-
- * autogen.sh (have_libtool): Update comments for Darwin.
-
-2007-05-18 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/java2d/AbstractGraphics2D.java
- (fillScanlineAA): Removed. Replaced by renderScanline().
- (fillScanline): Dito.
- (renderScanline): New method. Renders a scanline according to
- the coverage information from the scanline converter.
- * gnu/java/awt/java2d/Pixelizer.java: New interface. Describes
- the targets of the rasterizer.
- * gnu/java/awt/java2d/ScanlineConverter.java
- (alphaRes): Removed.
- (ONE): Removed.
- (scanlineCoverage): New field. Manages the coverage information.
- (scanlinesPerPixel): Removed.
- (scanlineXCov): Removed.
- (scanlineYCov): Removed.
- (slPix0): Removed.
- (ScanlineConverter): Initialize scanline coverage data structure.
- (clear): Also clear the scanline coverage.
- (doScanline): Work with Pixelizer objects.
- Use the ScanlineCoverage datastructure.
- (main): New method. Performs some tests.
- (renderShape): Work with pixelizer objects rather than directly
- on AbstractGraphic2D. Adjust to use ScanlineCoverage datastructure.
- (setResolution): Set resolution on ScanlineCoverage data too.
- * gnu/java/awt/java2d/ScanlineCoverage.java: New class. Stores
- and manages scanline coverage information.
-
-2007-05-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * java/rmi/MarshelledObject.java,
- * java/rmi/activation/Activatable.java,
- * java/rmi/activation/ActivationDesc.java,
- * java/rmi/activation/ActivationGroup.java,
- * java/rmi/activation/ActivationGroupDesc.java,
- * java/rmi/activation/ActivationInstantiator.java,
- * java/rmi/activation/ActivationMonitor.java,
- * java/rmi/activation/Activator.java:
- Genericized.
-
-2007-05-13 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-06-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
* configure.ac:
- Check if nsl library is needed for inet_pton.
- * tools/gappletviewer.in,
- * tools/gjar.in,
- * tools/gjarsigner.in,
- * tools/gjavah.in,
- * tools/gkeytool.in,
- * tools/gnative2ascii.in,
- * tools/gorbd.in,
- * tools/grmic.in,
- * tools/grmid.in,
- * tools/grmiregistry.in,
- * tools/gserialver.in,
- * tools/gtnameserv.in:
- Remove spaces around '=' in setting of datarootdir.
-
-2007-05-11 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
- (executeMethods): Remove cast to ClassReferenceTypeId.
-
-2007-05-11 Jeroen Frijters <jeroen@frijters.net>
-
- * java/lang/Float.java
- (toString(float)): Call VMFloat instead of VMDouble.
- (parseFloat): Call VMFloat. Fixed comment.
- * vm/reference/java/lang/VMFloat.java
- (toString, parseFloat): New methods.
- NEWS: added note about these changes.
-
-2007-05-08 Kyle Galloway <kgallowa@redhat.com>
-
- * vm/reference/VMFrame.java (<init>): Add a parameter for the "this"
- pointer of the frame.
-
-2007-05-08 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/x/XFontPeer.java: Removed.
- * gnu/java/awt/peer/x/XGraphics.java: Removed
- * gnu/java/awt/peer/x/XFontPeer2.java
- (XLineMetrics.getDescent): Use cached idendity transform.
- (XFontMetrics.cachedPoint): New field. Caches a Point2D instance
- for reuse.
- (XFontMetrics.getAscent): Use cached idendity transform.
- (XFontMetrics.getDescent): Use cached idendity transform.
- (XFontMetrics.getHeight): Use cached idendity transform.
- (XFontMetrics.charWidth): Map character to glyph index first.
- (XFontMetrics.stringWidth): Use cached idendity transform.
- (IDENDITY): New static field. A reused AffineTransform instance.
-
-2007-05-08 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/font/FontDelegate.java
- (getGlyphIndex): New method. Maps characters to their
- glyph index in the font.
- M gnu/java/awt/font/opentype/OpenTypeFont.java
- (getGlyphIndex): New method. Maps characters to their
- glyph index in the font.
-
-2007-05-08 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/java2d/AbstractGraphics2D.java
- (AA_SAMPLING): Removed.
- (alpha): Removed field.
- (edgeTable): Removed field.
- (fillScanlineAA): Removed obsolete method.
- (drawPolyline): Implemented by using a GeneralPath.
- (drawPolygon): Reset the cached polygon.
- (fillPolygon): Reset the cached polygon.
- (fillShape): Default to antialias on for text.
- (rawDrawLine): Use ShapeCache.
- (rawDrawRect): Use ShapeCache.
- (rawFillRect): Use ShapeCache.
- (fillScanlineAA): New method for antialiased rendering.
- * gnu/java/awt/java2d/ScanlineConverter.java
- (scanlinesPerPixel): New field.
- (minX,maxX): New fields.
- (scanlineYCov,scanlineXCov): New fields.
- (slPix0): New field.
- (alphaRes): New field.
- (renderShape): Add antialiasing functionality.
- (doScanline): Add antialiasing functionality.
- (setResolution): Add antialiasing functionality.
- (addShape): Determine span in X direction.
- (fit): Fix thinko.
- * gnu/java/awt/java2d/ShapeCache.java
- (polyline): New field for caching polylines.
-
-2007-05-08 Roman Kennke <roman@kennke.org>
-
- * examples/gnu/classpath/examples/awt/HintingDemo.java
- Add support for showing the original vs the hinted glyphs plus
- a grid.
-
-2007-05-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * lib/Makefile.am: Print property files as well.
-
-2007-05-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * native/jni/gtk-peer/gtkpeer.c:
- Added support for 64-bit architectures.
+ Check for --with-glibj too when disabling
+ the javac check.
-2007-05-04 Chris Burdess <dog@gnu.org>
-
- Fixes PR #31814
- * gnu/xml/dom/DomDocument.java,
- gnu/xml/dom/ls/SAXEventSink.java: Don't default attribute when mode is
- #IMPLIED and value is not specified.
- * gnu/xml/stream/XMLParser.java: Add debugging info.
-
-2007-05-03 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/Jdwp.java (notify): Rewrite to call
- new array-based method.
- (notify): New function.
- (sendEvent): Rewrite to use sendEvents.
- (sendEvents): New method.
- * gnu/classpath/jdwp/event/Event.java (toPacket): Make static.
- Change parameters to use arrays for events and requests.
- Add suspendPolicy parameter.
- Move per-event data transformation to...
- (_toData): ... here.
- * gnu/classpath/jdwp/transport/JdwpConnection.java
- (sendEvent): Renamed to ...
- (sendEvents): ... this.
- Change parameters to use arrays for events and requests.
- Add suspendPolicy parameter.
-
-2007-05-03 Thomas Fitzsimmons <fitzsim@redhat.com>
-
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=237304
- * javax/swing/text/html/HTMLEditorKit.java
- (getStyleSheet): Throw RuntimeException when style loading fails.
- * lib/Makefile.am: Treat css files as a property files.
- * javax/swing/text/html/default.css: Move to...
- * resource/javax/swing/text/html/default.css: New file.
-
-2007-05-03 Andrew Haley <aph@redhat.com>
-
- * gnu/javax/management/Server.java (Server): Record the delegate.
- (registerMBean): Notify the delegate.
- (unregisterMBean): Likewise.
- (notify): New method.
-
-2007-04-30 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/x/XLightweightPeer.java: Removed.
- * gnu/java/awt/peer/x/XEventPump.java
- (handleEvent): Improved handling of event ids to window mapping.
- * gnu/java/awt/peer/x/XFontPeer2.java:
- Load font.properties at startup.
- (XLineMetrics.glyphVector): New field.
- (XLineMetrics.XLineMetrics): Get glyphVector from font delegate.
- (XLineMetrics.getHeight): Implemented using glyph vector.
- (XLineMetrics.getLeading): Implemented.
- (XFontPeer2): Change hardwired font to something more common.
- (encodeFont): New methods, encodes a font to the font.properties
- format.
- (validName): New method. Checks and returns a valid font name.
- * gnu/java/awt/peer/x/XGraphics2D.java
- (foreground): New field.
- (rawSetPixel): Removed.
- (rawDrawLine): Draw a segment.
- (rawSetForeground): Removed.
- (fillScanline): New method.
- (fillScanlineAA): New method.
- (setPaint): Set the foreground color.
- (fillShape): Synchronize super behaviour.
- (rawDrawImage): Optimize XImage.
- * gnu/java/awt/peer/x/XGraphicsDevice.java
- (getDisplay): Improve creation of socket.
- (createLocalSocket): New helper method to create a local socket.
- * gnu/java/awt/peer/x/XImage.java
- (getGraphics): Return an XGraphics2D.
- * gnu/java/awt/peer/x/XToolkit.java
- (getClasspathFontPeer): Use XFontPeer2.
- (createComponent): Removed.
- * gnu/java/awt/peer/x/XWindowPeer.java
- (getGraphics): Return an XGraphics2D.
- (show): Clear the window.
- (getFontMetrics): Use XFontPeer2.
-
-2007-04-30 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/swing/SwingButtonPeer.java
- (SwingButton.handleFocusEvent): New method. Handles focus events.
- (SwingButton.requestFocus): Overridden to avoid loop into peer
- and back.
- (SwingButton.requestFocus(boolean)): Overridden to avoid loop
- into peer and back.
- * gnu/java/awt/peer/swing/SwingCheckboxPeer.java: New class.
- Implements CheckboxPeer for Swing toolkit.
- * gnu/java/awt/peer/swing/SwingComponent.java
- (handleFocusEvent): New method. Handles focus events.
- * gnu/java/awt/peer/swing/SwingComponentPeer.java
- (getMinimumSize): Delegate to minimumSize().
- (getPreferredSize): Delegate to preferredSize().
- (handleEvent): Only paint when component is showing. Coalesce
- paint event in any case. Reformat. Handle focus events.
- (requestFocus): Post FOCUS_GAINED event.
- (handleFocusEvent): New method. Delegate to SwingComponent
- object.
- * gnu/java/awt/peer/swing/SwingContainerPeer.java
- (addHeavyweightDescendent): Make this protected.
- (removeHeavyweightDescendent): Make this protected.
- (getHeavyweightDescendents): New method. Returns all registered
- heavyweights.
- (handleKeyEvent): Delegate to peer's handleEvent() method.
- * gnu/java/awt/peer/swing/SwingLabelPeer.java
- (SwingLabel.handleFocusEvent): New method.
- * gnu/java/awt/peer/swing/SwingListPeer.java
- (SwingList.handleFocusEvent): New method.
- * gnu/java/awt/peer/swing/SwingPanelPeer.java
- Fix typo and import.
- * gnu/java/awt/peer/swing/SwingTextAreaPeer.java
- Wrap up text area in viewport.
- * gnu/java/awt/peer/swing/SwingTextFieldPeer.java
- (SwingTextField.handleFocusEvent): New method.
- (SwingTextField.requestFocus): New method.
- (SwingTextField.requestFocus(boolean)): New method.
-
-2007-04-27 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/event/EventManager.java
- (getEventRequest): Rename to...
- (getEventRequests): ...this.
- Change return type to array of requests.
- Construct a list of all matching events and return
- them all.
- * gnu/classpath/jdwp/Jdwp.java (notify): Use getEventRequests
- and send event notifications for all matching requests.
-
-2007-04-27 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/event/filters/LocationOnlyFilter.java
- (matches): Use Location.equals to determine equality.
- * vm/reference/gnu/classpath/jdwp/VMMethod.java (equals):
- New method.
- * gnu/classpath/jdwp/util/Location.java (equals):
- New method.
-
-2007-04-27 Roman Kennke <roman@kennke.org>
-
- * java/nio/CharViewBufferImpl.java
- (slice): Fixed offset for slice buffer.
- * java/nio/DoubleViewBufferImpl.java
- (slice): Fixed offset for slice buffer.
- * java/nio/FloatViewBufferImpl.java
- (slice): Fixed offset for slice buffer.
- * java/nio/IntViewBufferImpl.java
- (slice): Fixed offset for slice buffer.
- * java/nio/LongViewBufferImpl.java
- (slice): Fixed offset for slice buffer.
- * java/nio/ShortViewBufferImpl.java
- (slice): Fixed offset for slice buffer.
-
-2007-04-25 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/gtk/GdkFontPeer.java,
- * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
- * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
- * gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
- * gnu/java/awt/peer/gtk/GtkGenericPeer.java,
- * gnu/java/awt/peer/gtk/GtkToolkit.java:
- Added fields to hold the native state. Added class initialization
- things to fetch the JNI field IDs.
- * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h,
- * include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h,
- * include/gnu_java_awt_peer_gtk_GtkGenericPeer.h,
- * include/gnu_java_awt_peer_gtk_GtkToolkit.h:
- Added / changed class init methods for field ID initialization.
- * native/jni/classpath/Makefile.am: Removed native_state stuff.
- * native/jni/classpath/native_state.c,
- * native/jni/classpath/native_state.h: Removed.
- * native/jni/gconf-peer/Makefile.am: Removed native_state stuff.
- * native/jni/gtk-peer/Makefile.am: Removed native_state stuff.
- * native/jni/gtk-peer/cairographics2d.h,
- * native/jni/gtk-peer/gdkdisplay.h,
- * native/jni/gtk-peer/gdkfont.h,
- * native/jni/gtk-peer/GtkDragSourceContextPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollPanePeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,
- * native/jni/gtk-peer/gtk_jawt.c:
- Removed native state stuff and replaced that with an approach
- to store the native state of an object directly in that object.
- * native/jni/gtk-peer/gtkpeer.c: New file. Implements the new native
- state management.
- * native/jni/gtk-peer/gtkpeer.h: Remove NSA stuff and added
- prototypes for new native state handling.
-
-2007-04-23 Mark Wielaard <mark@klomp.org>
-
- * doc/www.gnu.org/newsitems.txt: Add 0.95.
- * doc/www.gnu.org/downloads/downloads.wml: Likewise.
- * doc/www.gnu.org/announce/20070423.wml: New file.
-
-2007-04-23 Mark Wielaard <mark@klomp.org>
-
- * NEWS: Add new 0.95 features.
-
-2007-04-23 Jeroen Frijters <jeroen@frijters.net>
-
- PR classpath/31646:
- * java/util/Arrays.java (qsort): Corrected initial median calculation.
-
-2007-04-22 Dalibor Topic <robilad@kaffe.org>
-
- * Makefile.am (ACLOCAL_AMFLAGS): Add contents of env var
- LOCAL_AUTORECONF_AMFLAGS to allow for systems where the user
- has a mix of system & hacked-up autotools.
-
-2007-04-22 Dalibor Topic <robilad@kaffe.org>
-
- * autogen.sh: Removed unnecessary -I m4 flag.
-
-2007-04-19 Casey Marshall <csm@gnu.org>
-
- PR classpath/31626:
- * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
- (createSocket): New method.
-
-2007-04-19 Dalibor Topic <robilad@kaffe.org>
-
- * tools/gappletviewer.in,
- tools/gjar.in,
- tools/gjarsigner.in,
- tools/gjavah.in,
- tools/gkeytool.in,
- tools/gnative2ascii.in,
- tools/gorbd.in,
- tools/grmic.in,
- tools/grmid.in,
- tools/grmiregistry.in,
- tools/gserialver.in,
- tools/gtnameserv.in: Set datarootdir to fix a warning from
- configure.
-
-2007-04-19 Dalibor Topic <robilad@kaffe.org>
-
- * INSTALL: Removed file generated by autogen.sh.
-
- * .cvsignore: Added INSTALL.
-
-2007-04-19 Dalibor Topic <robilad@kaffe.org>
-
- * INSTALL: Replaced by generic install file.
-
- * autogen.sh: Removed redundant and no longer necessary
- sections. Use autoreconf.
-
-2007-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * m4/acinclude.m4
- (CLASSPATH_FIND_JAVAC): Allow detected JAVAC.
-
-2007-04-19 Dalibor Topic <robilad@kaffe.org>
-
- * lib/Makefile.am (propertyfiles, cssfiles, metafiles,
- iconfiles) Removed variables, inlined them into resource
- target to avoid use of shell construct and fix portability
- warning from automake 1.10.
-
-2007-04-18 Tom Tromey <tromey@redhat.com>
-
- * tools/gnu/classpath/tools/javah/MethodHelper.java (print):
- Changed arguments. Directly print method name.
- * tools/gnu/classpath/tools/javah/ClassWrapper.java
- (methodNameMap): New field.
- (makeVtable): Initialize it.
- (printMethods): Compute name for bridge targets.
-
-2007-04-18 Andrew Haley <aph@redhat.com>
+2008-06-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * gnu/java/rmi/server/UnicastConnectionManager.java
- (UnicastConnectionManager(int port, RMIServerSocketFactory)):
- Listen on "localhost", not localhost.
+ * tools/gnu/classpath/tools/getopt/OptionException.java:
+ (OptionException(String,Throwable)): New constructor.
+ * tools/gnu/classpath/tools/jar/Main.java:
+ (fileLists): New queue for streams containing lists of files.
+ (HandleFile.NotifyFile(String)): Check for '@' arguments
+ and add to stream queue.
+ (parsed(String)): Add stdin to queue instead of setting flag.
+ (readNames()): Work with the queue rather than just stdin.
+ (run(String[])): Always execute readNames().
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+2008-05-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * include/GtkDragSourceContextPeer.h: Removed, renamed to ..
-
- * include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h:
- New file.
+ PR classpath/35482
+ * java/lang/String.java:
+ (toLowerCase()): Fix calculation of number
+ of characters to copy.
+ (toLowerCaseTurkish()): Likewise.
- * native/jni/gtk-peer/GtkDragSourceContextPeer.c: Include
- gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h.
+2008-04-18 Mario Torre <neugens@aicas.com>
- * include/Makefile.am (GTKPEER_H_FILES): Renamed
- GtkDragSourceContextPeer.h to
- gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
- per current convention. Use portable construct to create
- gtk and libxmlj peer headers. Depend on the java source code,
- rather then the class files in order to avoid spurious
- regeneration.
+ PR classpath/35974
+ * java/util/logging/Logger.java: fix a deadlock and reformat code.
+ Now all the methods of the class get a lock on a static lock, this
+ avoids a lock when getLogger and log are used concurrently.
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+2008-04-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
- * include/Makefile.am: Use portable construct to create
- qt peer headers. Depend on the java source code,
- rather then the class files in order to avoid spurious
- regeneration.
+ * m4/gcc_attribute.m4 (GCC_ATTRIBUTE): Fix cache variable name.
+ * tools/Makefile.am (gappletviewer, gjarsigner, gkeytool, gjar)
+ (gnative2ascii, gserialver, gjavah, grmiregistry, gtnameserv)
+ (gorbd, grmid, grmic) [!CREATE_WRAPPERS]: Add stub dependencies
+ for these scripts, to trick automake into hiding the respective
+ rules for the programs below the CREATE_WRAPPERS conditional.
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+2008-04-18 Tom Tromey <tromey@redhat.com>
- * include/Makefile.am: Use portable construct to create
- alsa and dssi peer headers. Depend on the java source code,
- rather then the class files in order to avoid spurious
- regeneration.
-
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+ * lib/gen-classlist.sh.in: Skip 'sed' steps if no vm_omitlist
+ found.
- * include/Makefile.am: Use portable construct to create
- gconf peer header. Depend on the java source code, rather
- the class file to avoid spurious regeneration.
+2008-04-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+ * lib/gen-classlist.sh.in: Avoid grepping each omission, by
+ building an awk script with a hash for literal files, and
+ awk regular expressions for the rest.
+ * configure.ac: Call AC_PROG_AWK.
- * include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h:
- Removed empty header file.
+2008-03-27 Mario Torre <neugens@aicas.com>
+
+ * gnu/xml/stream/SAXParser.java (getProperty): throw
+ SAXNotRecognizedException instead of SAXNotSupportedException
+ after fall through all known properties.
+ * javax/xml/namespace/QName.java (valueOf): throw
+ IllegalArgumentException if string is null.
+ * java/util/concurrent/CopyOnWriteArrayList.java (lastIndexOf):
+ fixed indentation.
+ (indexOf): likewise.
+
+2008-03-26 Mario Torre <neugens@aicas.com>
+
+ * java/util/concurrent/CopyOnWriteArrayList.java (SubList.set):
+ (SubList.clear): new method.
+ (SubList.checkMod): fix indentation.
+ (SubList.checkBoundsInclusive): likewise.
+ (SubList.checkBoundsExclusive): likewise.
+ (SubList): added synchronization. Now throw
+ IndexOutOfBoundsException instead of IllegalArgumentException
+ when index are out of range.
+ (SubList.size): added synchronization.
+ (SubList.get): likewise.
+ (SubList.listIterator): fixed indentation.
+ (SubList.set): added synchronization. Update the state of the storage
+ after modification.
+ (SubList.add): likewise.
+ (SubList.remove): likewise.
+ (SubList.addAll): likewise.
+
+2008-03-26 Mario Torre <neugens@aicas.com>
+
+ * java/util/concurrent/CopyOnWriteArrayList.java (equals): removed
+ useless local variable.
+ (hashCode): new method.
+
+2008-03-25 Mario Torre <neugens@aicas.com>
+
+ * java/util/concurrent/CopyOnWriteArrayList.java (clone): clone method
+ in CopyOnWriteArrayList should just do a shallow copy. Fixed.
+ (equals): new method, override from base class.
+ (toString): likewise.
+
+2008-03-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/util/concurrent/CopyOnWriteArrayList.java:
+ Don't extend AbstractList.
+ (containsAll(Collection)): Implemented.
+ (listIterator()): Likewise.
+ (subList(int,int)): Likewise.
+
+2008-03-31 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * doc/www.gnu.org/events/events.wml:
+ Correct layout and fix GSoC link.
+
+2008-03-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * doc/www.gnu.org/external.wml:
+ Corrected Jalopy tag name.
+ * doc/www.gnu.org/home.wml:
+ Update link to tasks.
+ * doc/www.gnu.org/announce/20080222.wml:
+ Correct IcedTea and builder links.
+ * doc/www.gnu.org/downloads/downloads.wml:
+ Add 0.97 and 0.97.1.
+ * doc/www.gnu.org/events/events.wml:
+ Fix links and add FOSDEMs/GSoC.
+
+2008-03-24 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/22883
+ * doc/www.gnu.org/home.wml:
+ Fix a typo.
+ * doc/www.gnu.org/docs/docs.wml:
+ Fix links to point to current versions of
+ vmintegration and hacking, and add links to
+ tools.
+
+2008-03-24 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/22883
+ * doc/www.gnu.org/home.wml:
+ Update home page to reflect current state of
+ affairs.
+
+2008-03-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * doc/www.gnu.org/newsitems.txt:
+ Add new announcement.
+ * doc/www.gnu.org/announce/20080311.wml:
+ Added.
+ * doc/www.gnu.org/cp-tools/.cvsignore:
+ Ignore generated HTML files.
- * include/Makefile.am (QTPEER_H_FILES):
- Removed gnu_java_awt_peer_qt_QtGraphicsEnvironment.h.
+2008-03-10 Jim Meyering <meyering@redhat.com>
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+ Don't leak upon failed realloc.
+ * native/jni/classpath/jcl.c (JCL_realloc): Upon failed realloc,
+ free the original buffer before throwing the exception.
- * native/jni/xmlj/xmlj_xpath.c: Don't include
- gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h.
+2008-03-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
- * include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h:
- Removed empty header file.
+ * doc/cp-hacking.texinfo: Fix some typos.
+ * doc/cp-tools.texinfo: Likewise.
+ * doc/cp-vmintegration.texinfo: Likewise.
- * include/Makefile.am (XMLJ_H_FILES): Removed
- gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h.
+2008-03-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-2007-04-18 Dalibor Topic <robilad@kaffe.org>
+ * doc/cp-hacking.texinfo: Fix spacing after periods.
+ * doc/cp-tools.texinfo: Likewise.
+ * doc/cp-vmintegration.texinfo: Likewise.
- * include/gnu_java_awt_peer_qt_QtContainerPeer.h: Removed
- empty header file.
+2008-02-27 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * include/Makefile.am (QTPEER_H_FILES): Removed
- gnu_java_awt_peer_qt_QtContainerPeer.h.
+ * configure.ac:
+ Check for sys/loadavg.h.
+ * native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c:
+ Include sys/loadavg.h if found.
-2007-04-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-06-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * native/jni/java-net/local.c:
- Fix import of FIONREAD.
- * native/jni/java-nio/gnu_java_nio_VMChannel.c,
- * native/jni/native-lib/cpnet.c:
- Likewise.
+ * include/Makefile.am: Don't delete headers
+ when not rebuilding them.
-2007-04-17 Dalibor Topic <robilad@kaffe.org>
-
- * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAH):
- Use AC_CHECK_PROGS and AC_MSG_ERROR. Check for
- gjavah, gcjh-wrapper-4.1 and gcjh-4.1. Error out
- when no javah implementation can be found.
-
-2007-04-17 Dalibor Topic <robilad@kaffe.org>
-
- * configure.ac (CLASSPATH_WITH_JAVAH): Only check if
- the JNI headers need to be regenerated.
-
- * m4/acinclude.m4 (USER_SPECIFIED_JAVAH): Removed unused
- conditional.
-
-2007-04-17 Dalibor Topic <robilad@kaffe.org>
-
- * lib/Makefile.am (JAVAH): Removed unused variable.
-
-2007-04-17 Casey Marshall <csm@gnu.org>
-
- PR classpath/31302:
- * gnu/javax/net/ssl/provider/SSLSocketImpl.java (SSLSocketImpl):
- Always make a new socket.
- (bind, connect, getInetAddress, getLocalAddress, getPort,
- getLocalPort, getRemoteSocketAddress, getLocalSocketAddress,
- setTcpNoDelay, getTcpNoDelay, setSoLinger, getSoLinger,
- setOOBInline, getOOBInline, setSoTimeout, getSoTimeout,
- setSendBufferSize, getSendBufferSize, setReceiveBufferSize,
- getReceiveBufferSize, setKeepAlive, getKeepAlive, setTrafficClass,
- getTrafficClass, setReuseAddress, getReuseAddress, close,
- shutdownInput, shutdownOutput, isConnected, isBound, isClosed,
- isInputShutdown, isOutputShutdown): Always use
- 'underlyingSocket'.
-
-2007-04-16 Dalibor Topic <robilad@kaffe.org>
-
- * configure.ac (AM_PROG_CC_C_O): Added to fix automake 1.10
- warning.
-
-2007-04-16 Dalibor Topic <robilad@kaffe.org>
-
- * native/plugin/Makefile.am (libgcjwebplugin_la_LDFLAGS):
- Added AM_LDFLAGS for automake 1.10.
-
-2007-04-16 Tom Tromey <tromey@redhat.com>
-
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=236614
- * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
- (createSocket): Change order of delegation.
-
-2007-04-16 Andrew Haley <aph@redhat.com>
-
- * java/io/ObjectInputStream.java: (parseContent): Call (String,
- Object) version of dumpElementln.
- (dumpElementln(String, Object)): New method.
- * java/io/ObjectOutputStream.java (writeObject): Call (String,
- Object) version of dumpElementln.
- (dumpElementln(String, Object)): New method.
-
-2007-04-16 Mark Wielaard <mark@klomp.org>
-
- Fixes bug #31590
- * java/net/URI.java (parseServerAuthority): Allow empty portStr.
-
-2007-04-16 Andrew Haley <aph@redhat.com>
-
- * org/omg/IOP/TaggedComponentHelper.java (read): Use
- read_octet_array(), not read().
- (write): Use write_octet_array(), not write().
-
- * org/omg/PortableServer/Servant.java (_get_delegate): Throw if no
- delegate has been set.
-
-2007-04-16 Chris Burdess <dog@gnu.org>
-
- * gnu/xml/stream/XMLParser.java: Work around a problem with incorrectly
- formatted file URLs.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * native/jni/java-lang/Makefile.am (libjavalang_la_LIBADD):
- Fix portability warnings from automake 1.10.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * Makefile.am (EXTRA_DIST): Add ChangeLog-2006.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * native/target/.cvsignore: Removed.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * doc/Makefile.am: Fix portability warnings from
- automake 1.10.
-
-2007-04-15 Roman Kennke <roman@kennke.org>
-
- * native/target/Linux/.cvsignore,
- * native/target/generic/.cvsignore: Removed.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * depcomp, install-sh, missing, mkinstalldirs,
- doc/texinfo.tex: Removed files generated by autogen.sh.
-
- * .cvsignore: Ignore generated files depcomp, install-sh,
- missing, mkinstalldirs.
-
- * doc/.cvsignore: Ignore generated file doc/texinfo.tex.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * doc/cp-hacking.texinfo: Updated with information from
- INSTALL file. Removed duplicate and outdated information.
- Updated compiler information. Fixed versioning information
- where entries diverged. Turned command, option, file and
- URL strings into proper texinfo elements.
-
-2007-04-15 Dalibor Topic <robilad@kaffe.org>
-
- * configure.ac: Added support for Iceape libraries as
- a substitute for Mozilla for Debian.
-
-2007-04-12 Roman Kennke <roman@kennke.org>
-
- * java/nio/Buffer.java
- (array): New abstract method.
- (hasArray): New abstract method.
- (arrayOffset): New abstract method.
- (isDirect): New abstract method.
-
-2007-04-12 Roman Kennke <roman@kennke.org>
-
- * java/nio/CharBuffer.java
- (wrap(CharSequence,int,int)): Reimplemented using specialized
- subclass.
- * java/nio/CharSequenceBuffer.java: New class. Implements char
- buffers that wrap CharSequences.
-
-2007-04-12 Francis Kung <fkung@redhat.com>
-
- PR 23887
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (drawGlyphVector): Check for transforms before using optimized path.
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
- (FreetypeGlyphVector(FreetypeGlyphVector)): Initialize glyphTransforms array
- to null and check for nulls in copied array.
- (hasTransforms): New method.
- (performDefaultLayout): Check for identity transform.
- (setGlyphTransform): Check for equality before making changes.
-
-2007-04-12 Francis Kung <fkung@redhat.com>
-
- PR 23887
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
- (getGlyphLogicalBounds): Fix number of coordinates in transform call.
- (performDefaultLayout): Respect transformation in font attributes.
- * javax/swing/plaf/basic/BasicProgressBarUI.java
- (getStringPlacement): Handle vertical orientations.
- (paintString): Space vertical text properly.
-
-2007-04-12 Francis Kung <fkung@redhat.com>
-
- PR 31539
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
- (ft2_map): New static variable.
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_initStaticState): Set up ft2_map.
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Use cached ft2_map.
-
-2007-04-12 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
- (clipboard_get_func): Call DeleteLocalRef.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
- (clipboard_targets_received): Likewise.
- (clipboard_uris_received): Likewise.
-
-2007-04-12 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * LICENSE: Added m4/ax_func_which_gethostbyname_r.m4 license.
- * configure.ac: Added AX_FUNC_WHICH_GETHOSTBYNAME_R check.
- * m4/ax_func_which_gethostbyname_r.m4: New file.
- * native/jni/native-lib/cpnet.c (cpnet_getHostByName): Check for
- different number of arguments of gethostbyname_r.
-
-2007-04-12 Mark Wielaard <mark@klomp.org>
-
- * gnu/java/awt/peer/ClasspathFontPeer.java (LRUCache): New static
- inner class.
- (transCache): New static LRUChache field.
- (copyTransformToAttrs): Check whether a TransformAttribute already
- exists in the transCache for the given AffineTransform.
-
-2007-04-12 Mark Wielaard <mark@klomp.org>
-
- * configure.ac (COMPILE_GTK_PEER): Add check for cairo >= 1.1.8.
-
-2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * native/jni/java-nio/javanio.c: Include fcntl.h instead of
- sys/fcntl.h.
-
-2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- * native/jni/native-lib/cpproc.c (cpproc_forkAndExec): Fixed
- warning on some compilers, e.g. MIPSpro.
-
-2007-04-11 Francis Kung <fkung@redhat.com>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Avoid unneeded
- object reference.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics): Unlock font.
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Remove redundant checks.
+2008-06-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
+ * configure.ac: Only regenerate headers by
+ default if the headers aren't in the source tree.
- * configure.ac: Added AC_C_INLINE.
+2008-06-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-04-10 Mark Wielaard <mark@klomp.org>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
- (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile):
- Destroy surface after it is used to create a cairo context.
-
-2007-04-09 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/ObjectName.java:
- (parse(String)): Catch multiple wildcards,
- initialise with an empty string (so null isn't
- appended), and emit comma even when wildcard
- ends the list.
- (checkComponents()): Catch newlines.
- (quote(String)): Handle newlines and quotes
- correctly.
-
-2007-04-09 Francis Kung <fkung@redhat.com>
-
- PR 31311
- * gnu/java/awt/peer/gtk/ComponentGraphics.java
- (dispose): Removed method.
- (disposeSurface): Removed method.
- * gnu_java_awt_peer_gtk_ComponentGraphics.h: Regenerated.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
- (Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface): Removed.
- (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState): Destroy surface
- after it is used to create a cairo context.
-
-2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/ObjectName.java:
- (propertyValuePattern): New cache variable.
- (parse(String)): Record in propertyListPattern
- not propertyPattern and set propertyValuePattern.
- (isPropertyPattern()): Semantics altered to be the
- OR of isPropertyListPattern() and isPropertyValuePattern().
- (isPropertyListPattern()): Implemented.
- (isPropertyValuePattern()): Implemented.
- (isPropertyValuePattern(String)): Implemented.
+ * configure.ac: Only run javac check
+ if examples, tools and/or class library are
+ being built.
+ * scripts/check_jni_methods.sh.in:
+ Remove duplicates in the list of JNI methods
+ for when builddir==srcdir.
-2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-06-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * javax/management/ObjectName.java:
- (parse(String)): Fix result of getKeyPropertyListString().
+ * lib/Makefile.am:
+ Replace explicit mkinstalldirs with $(mkinstalldirs).
-2007-04-07 Mark Wielaard <mark@klomp.org>
-
- * resource/META-INF/services/javax.xml.parsers.DocumentBuilderFactor,
- resource/META-INF/services/javax.xml.parsers.SAXParserFactory,
- resource/META-INF/services/javax.xml.parsers.TransformerFactory,
- resource/META-INF/services/org.relaxng.datatype.DatatypeLibraryFactory,
- resource/META-INF/services/org.w3c.dom.DOMImplementationSourceList,
- resource/META-INF/services/org.xml.sax.driver: Removed.
-
-2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-06-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * javax/management/ObjectName.java:
- (checkComponents()): Separate value and
- key illegal characters to allow value wildcards.
+ * scripts/check_jni_methods.sh.in:
+ Search the source directory as well for
+ when headers are in the tarball.
-2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-06-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * javax/management/ObjectName.java
- (parse(String)): Fix parsing where the wildcard
- is juxtaposed between other pairs.
+ * Makefile.am: Replace tools with
+ $(TOOLSDIR).
+ * m4/acinclude.m4: Include option
+ to disable building the tools.
-2007-04-06 Mark Wielaard <mark@klomp.org>
-
- * configure.ac (VERSION): Set to 0.96-pre.
-
-2007-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/MBeanAttributeInfo.java:
- (serialVersionUID): Added.
- * javax/management/MBeanFeatureInfo.java:
- (writeObject(ObjectOutputStream)): Added for
- later 1.6 support.
- * javax/management/Notification.java:
- (serialVersionUID): Added.
- (Notification(String,Object,long,long)): Make
- default message the empty string not null.
- (Notification(String,Object,long,long,String)):
- Set source explicitly.
- (writeObject(ObjectOutputStream)): Added to match
- Sun.
+2008-06-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * Makefile.am: Use default makedistcheck
+ flags that test all optional dependencies.
+ * configure.ac: Set version to 0.97.2-pre.
+ * include/Makefile.am: Add header files to dist.
+ * lib/Makefile.am: Trick class files into being
+ built for dist, so headers can be generated.
-2007-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-03-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * java/util/Hashtable.java:
- (putAllInternal(Map)): Remove redundant semi-colon.
+ * configure.ac: Set version to 0.97.1
+ * NEWS: Add 0.97.1.
-2007-04-06 Mark Wielaard <mark@klomp.org>
+2008-03-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * lib/mkcollections.pl.in: Add externalclasses.
- * java/util/Collections.java: Unroll enhanced for loops.
- * java/util/HashMap.java: Likewise.
- * java/util/Hashtable.java: Likewise.
- * java/util/TreeMap.java: Likewise.
+ PR classpath/35422
+ * doc/api/Makefile.am: Include external/jsr166.
-2007-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-03-04 Robert Schuster <robertschuster@fsfe.org>
- * gnu/javax/management/Translator.java:
- (getTypeName(type)): Move type name creation to its own method.
- * javax/management/ObjectName.java:
- (WILDCARD): Added.
-
-2007-04-04 Andrew Haley <aph@redhat.com>
+ * gnu/xml/stream/AttributeImpl.java: Changed type field to String.
+ (getDTDType): Changed return type to String.
+ * gnu/xml/stream/XMLEventAllocatorImpl.java:
+ (allocate): Removed wrapping of string in QName object.
+ * gnu/xml/stream/XMLEventFactoryImpl.java:
+ (createAttribute(String, String)): Removed wrapping of string in
+ QName object.
+ (createAttribute(QName, String)): Ditto.
+ (createAttribute(String, String, String, String)): Ditto.
+ * javax/xml/stream/events/Attribute.java:
+ (getDTDType): Changed return type to String.
- * javax/management/ObjectName.java:
- (serialVersionUID): Declare.
- Make all fields transient.
- (parse): Break out from constructor.
- (writeObject, readObject): New methods.
-
-2007-04-05 Francis Kung <fkung@redhat.com>
+2008-03-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * include/Makefile.am: Remove old entry.
-
-2007-04-05 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/GtkToolkit.java
- (createDragGestureRecognizer): Remove failing subClass call.
+ * tools/Makefile.am:
+ Distribute property files.
-2007-04-05 Gary Benson <gbenson@redhat.com>
+2008-02-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * java/util/GregorianCalendar.java
- (computeFields): Fix WEEK_OF_MONTH calculation.
-
-2007-04-05 Christian Thalinger <twisti@complang.tuwien.ac.at>
-
- PR classpath/22800:
- * native/jni/java-lang/java_lang_VMDouble.c (doubleToLongBits)
- (doubleToRawLongBits, longBitsToDouble): Swap the byte
- ordering for little-endian arms without VFP.
-
-2007-04-05 Christian Thalinger <twisti@complang.tuwien.ac.at>
+ * NEWS: Set date for 0.97.
+ * configure.ac: Set version to 0.97
+
+2008-02-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * native/jni/java-net/java_net_VMNetworkInterface.c
- [HAVE_IFADDRS_H && HAVE_GETIFADDRS] (free_netif_list): Added
- #ifdef.
- (getVMInterfaces): Added UNUSED argument attribute.
-
-2007-04-05 Christian Thalinger <twisti@complang.tuwien.ac.at>
+ PR classpath/33751:
+ * configure.ac:
+ Don't check for readdir_r.
+ * native/jni/native-lib/cpio.c:
+ (cpio_readDir): Remove use of readdir_r, zero errno
+ before starting and always leave a \0 at the end after
+ strncpy.
+ * vm/reference/java/io/VMFile.java:
+ (list(String)): Make synchronized.
+
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * native/jni/java-nio/gnu_java_nio_charset_iconv_IconvDecoder.c,
- native/jni/java-nio/gnu_java_nio_charset_iconv_IconvEncoder.c
- [HAVE_ICONV] (createRawData, getData, infid, outfid): Added
- #ifdef.
- (openIconv): Added UNUSED argument attribute, so we can build with
- -Werror.
- (decode): Likewise.
- (closeIconv): Likewise.
-
-2007-04-05 Mark Wielaard <mark@klomp.org>
-
- * autogen.sh: Recognize automake 1.10.
- * configure.ac (AM_INIT_AUTOMAKE): Add -Wno-portability.
- * native/jawt/Makefile.am (libjawt_la_LDFLAGS): Add AM_LDFLAGS.
- * native/jni/gconf-peer/Makefile.am (libgconfpeer_la_LDFLAGS): Likewise.
- * native/jni/gtk-peer/Makefile.am (libgtkpeer_la_LDFLAGS): Likewise.
- * native/jni/midi-alsa/Makefile.am (libgjsmalsa_la_LDFLAGS): Likewise.
- * native/jni/midi-dssi/Makefile.am (libgjsmdssi_la_LDFLAGS): Likewise.
- * native/jni/qt-peer/Makefile.am (libqtpeer_la_LDFLAGS): Likewise.
-
-2007-04-04 Mark Wielaard <mark@klomp.org>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
- (cp_gtk_image_get_pixbuf): Return NULL when pointer is NULL.
- * gnu/java/awt/peer/gtk/GtkImage.java (setImage): Set loaded and
- call deliver() after pixels have been set.
- * gnu/java/awt/peer/gtk/GtkFramePeer.java (setIconImage): Only
- set icon when image has been properly loaded.
+ * gnu/java/util/prefs/EventDispatcher.java:
+ Re-added.
+ * gnu/java/util/prefs/GConfBasedPreferences.java,
+ * gnu/java/util/prefs/gconf/GConfNativePeer.java,
+ * java/util/prefs/AbstractPreferences.java,
+ * native/jni/gconf-peer/GConfNativePeer.c:
+ Regress to 0.96 versions.
-2007-04-04 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (drawCairoSurface): Made protected.
- * gnu/java/awt/peer/gtk/ComponentGraphics.java
- (cairoDrawGlyphVector): Removed method.
- (cairoSetFont): Removed method.
- (disposeNative): Removed method.
- (drawCairoSurface): New method.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector): Added
- locking.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont): Added locking.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative): Added locking.
-
-2007-04-04 Gary Benson <gbenson@redhat.com>
-
- * java/util/GregorianCalendar.java
- (GregorianCalendar(TimeZone, Locale)): Remove redundant complete().
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-04-04 Roman Kennke <roman@kennke.org>
+ * java/net/URI.java:
+ (compareTo(URI)): Change comparison sign so it
+ operates in the correct direction.
+
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * java/nio/channels/spi/SelectorProvider.java
- (inheritedChannel): Make method concrete and move default impl
- to here. Perform security checks as mandated by the spec.
- * gnu/java/nio/SelectorProviderImpl.java
- (inheritedChannel): Removed. Default impl is in SelectorProvider.
-
-2007-04-04 Roman Kennke <roman@kennke.org>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
- (init_glib_threads): Create global reference on lock object.
-
-2007-04-04 Roman Kennke <roman@kennke.org>
-
- * java/awt/Frame.java
- (weakFrames): Make private.
- (weakFramesQueue): New field. A reference queue to collect
- GCed references.
- (getFrames): Only do one iterations to avoid collecting null
- references.
- (hasDisplayableFrames): New helper method. Checks if there
- are any displayable frames. This is used by the event queue
- shutdown check.
- (noteFrame): Clean up GCed frames in the list.
- * java/awt/EventQueue.java
- (isShutdown): Move frame checking code into Frame.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * java/lang/System.java
- (inheritedChannel): New method, wraps
- SelectorProvider.inheritedChannel().
- * java/nio/channels/spi/SelectorProvider.java
- (inheritedChannel): New abstract method.
- * gnu/java/nio/SelectorProviderImpl.java
- (inheritedChannel): New method, return null as default.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * java/nio/ByteOrder.java
- (nativeByteOrder): Let this fail when the corresponding
- property is not set properly.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * javax/swing/plaf/basic/BasicTreeUI.java
- (getPathBounds): Consider the tree's insets. Added a bunch of
- null checks.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * javax/swing/plaf/basic/BasicLabelUI.java
- (cachedInsets): New field. Used for reusing the insets instance.
- (getFontMetrics): New helper method for fetching a suitable
- FontMetrics object.
- (getPreferredSize): Use new helper method for font metrics.
- (paint): Only do something if we have an icon or text.
- Use cached Insets instance and new font metrics helper.
- (paintDisabledText): Don't restore the graphics' color.
- (paintEnabledText): Don't restore the graphics' color.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * javax/swing/plaf/metal/MetalButtonUI.java
- (paintButtonPressed): Fill the whole button not only visibleRect.
- * javax/swing/plaf/metal/MetalLookAndFeel.java
- (LAF_defaults): Removed.
- (getDefaults): Always fetch super's defaults.
- * javax/swing/plaf/metal/MetalMenuBarUI.java
- (update): Don't leave 2 pixel gap.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * native/target/.cvsignore,
- * native/target/Linux/.cvsignore,
- * native/target/generic/.cvsignore: Some new ignores.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/peer/gtk/GThreadMutex.java,
- * gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
- * include/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h,
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c,
- * native/jni/gtk-peer/gthread-jni.c,
- * native/jni/gtk-peer/gthread-jni.h: Removed.
- * native/jni/gtk-peer/Makefile.am: Removed obsolete entries
- for removed files.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
- Removed unused bits from gthread-jni.c.
-
-2007-04-03 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
- (getGlyphs(int[], int[], long[])): Return void.
-
-2007-04-03 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/value/ArrayValue.java: New file.
-
-2007-04-03 Roman Kennke <roman@kennke.org>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
- (global_lock): New global variable that holds the object reference
- to the global GTK lock.
- (init_glib_threads): Add lock argument. Use
- gdk_threads_set_lock_functions to replace GTK's locking function
- with two callbacks that allow reentrant locking, based on
- JNI's MonitorEnter() and MonitorExit().
- (jni_lock_cb): New callback function for GTK locking.
- (jni_unlock_cb): New callback function for GTK unlocking.
- (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Add lock argument.
- Call init_glib_threads() with lock object.
- * include/gnu_java_awt_peer_gtk_GtkToolkit.h
- Regenerated.
- * gnu/java/awt/peer/gtk/GtkToolkit.java
- (GTK_LOCK): New static field. This is used as the global lock for
- GTK.
- (gtkInit): Add lock parameter.
- (static_init): Initialize global lock and call gtkInit() with
- that lock.
-
-2007-04-02 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
- (fontSet): Initialize to null.
- (FreetypeGlyphVector(Font, int[], FontRenderContext)): Populate fontSet
- array with default font if needed.
- (FreetypeGlyphVector(FreetypeGlyphVector)): Clone all fields.
- (getNativeFontPointer): New native method.
- * include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: Regenerated.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getNativeFontPointer):
- New function.
-
-2007-04-02 Francis Kung <fkung@redhat.com>
-
- * INSTALL: Document known bug in at-spi, atk, and gail packages prior to
- version 1.18.0.
-
-2007-04-02 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (cairoDrawGlyphVector): Added parameter.
- (drawGlyphVector): Retrieve and pass fontset parameter.
- * gnu/java/awt/peer/gtk/ComponentGraphics.java
- (cairoDrawGlyphVector): Added parameter.
- (lock): Removed unnecessary cast.
- (unlock): Removed unnecessary cast and explicitly set to ONE variable.
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
- (fontSet): New field.
- (dispose): New native method.
- (finalize): New method.
- (getGlyphFonts): New method.
- (getGlyphOutline): Pass fontSet parameter to native method.
- (getGlyphOutlineNative): Added parameter.
- (getGlyphs): Pass extra parameters to native method.
- (getGlyphsNative): Added parameters.
- (getKerning): Added fontSet parameter.
- (getMetricsNative): Added fontSet parameter.
- (performDefaultLayout): Only check kerning if glyphs use the same font.
- (setupGlyphMetrics): Pass extra parameters to native methods.
- * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,
- * include/gnu_java_awt_peer_gtk_FreetypGlyphVector.h: Regenerated.
- * native/jni/gtk-peer/gdkfont.h: Enable pango engine.
- (peerfont): Add variable for fontset.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector): Accept
- array of font pointers to use when drawing glyphs.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
- (getFontSet): New function.
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_dispose): New function.
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphOutlineNative):
- Added and use new fontSet parameter.
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Use pango
- to retrieve glyphs and estimate font, if the current font does not contain
- a requested glyph.
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning): Added and use
- new fontSet parameter.
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative): Added
- and use new fontSet parameter.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_dispose): Free fontset.
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Load fontset.
-
-2007-04-02 Andrew Haley <aph@redhat.com>
-
- * javax/management/ObjectName.java: Handle 0-length names.
- * javax/management/MBeanServerFactory.java: Use the domain that
- we've been passed, not the fixed string "DefaultDomain".
-
-2007-04-01 Mark Wielaard <mark@klomp.org>
-
- * org/omg/CORBA/DynAny.java: Mark as deprecated.
- * org/omg/CORBA/DynArray.java: Likewise.
- * org/omg/CORBA/DynEnum.java: Likewise.
- * org/omg/CORBA/DynFixed.java: Likewise.
- * org/omg/CORBA/DynSequence.java: Likewise.
- * org/omg/CORBA/DynStruct.java: Likewise.
- * org/omg/CORBA/DynUnion.java: Likewise.
- * org/omg/CORBA/DynValue.java: Likewise.
- * org/omg/CORBA/ORB.java (create_basic_dyn_any): Likewise.
- (create_dyn_any): Likewise.
- (create_dyn_array): likewise.
- (create_dyn_enum): Likewise.
- (create_dyn_sequence): Likewise.
- (create_dyn_struct): Likewise.
- (create_dyn_union): Likewise.
-
-2007-04-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * m4/acinclude.m4:
+ Remove check for gcjh.
+ * m4/ac_prog_javac.m4:
+ Check for ecj-3.2 and ecj-3.3, and add
+ -Xlint:unchecked for javac.
+
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/javax/management/Translator.java:
- (fromJava(Object[],Method)): Use the array from the
- parameter not the newly created one...
- (fromJava(Object, Type)): Support MXBeans.
- * javax/management/JMX.java:
- (newMXBeanProxy(MBeanServerConnection,ObjectName,Class)):
- Call newMXBeanProxy rather than newMBeanProxy.
- * javax/management/StandardMBean.java:
- (setAttribute(Attribute)): Use InvocationTargetException
- as cause.
+ (fromJava(Object[],Method)): Don't cast to Class<?>.
+ (fromJava(Object,Type)): Use ParameterizedType
+ and don't assume that List will work for Sets.
-2007-03-31 Jeroen Frijters <jeroen@frijters.net>
+2008-02-21 David Walluck <david@jpackage.org>
- PR classpath/31402:
- * java/util/concurrent/CopyOnWriteArrayList.java
- (remove): Fixed ArrayIndexOutOfBoundsException when index == 0.
-
-2007-03-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/openmbean/CompositeDataInvocationHandler.java:
- New file.
+ PR classpath/27204:
+ * m4/acinclude.m4:
+ (REGEN_WITH_JAY): Handle 'yes' as a default,
+ not a directory and give more user-friendly output.
-2007-03-30 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/util/VariableTable.java: Make argCnt and slots ints.
- (write): Replace writeLong with writeInt for above.
-
-2007-03-30 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/29869:
- * gnu/java/util/jar/JarUtils.java (log): Commented out.
- (readSFManifest): Don't log.
-
-2007-03-29 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/29869:
- * java/util/logging/LogManager.java (readConfiguration): Handle
- comma-separated 'handlers'. Don't try to add a non-existing
- handler.
-
-2007-03-29 Keith Seitz <keiths@redhat.com>
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/java/util/regex/REException.java:
+ (REException(String,Throwable,int,int)): Added
+ constructor which also includes the cause.
+ * gnu/java/util/regex/RETokenNamedProperty.java:
+ (getHandler(String)): Add support for \p{javaX}.
+ (JavaCategoryHandler): New class.
+
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * gnu/classpath/jdwp/event/ThreadStartEvent.java (Event):
- Event type is "THREAD_START" not "THERAD_END".
+ PR classpath/35274:
+ * m4/acinclude.m4:
+ Increase maximum heap size to 768mb.
- * gnu/classpath/jdwp/transport/SocketTransport.java (ITransport):
- Handle configure strings ":port" and "port".
+2008-02-21 Roman Kennke <kennke@aicas.com>
-2007-03-29 Francis Kung <fkung@redhat.com>
+ * java/awt/image/PixelInterleavedSampleModel.java
+ (createCompatibleSampleModel): Adjust scanline stride for new
+ width and optimize band offsets.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
- (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Revert last patch.
+2008-02-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-03-29 Mark Wielaard <mark@klomp.org>
+ PR classpath/35111:
+ * resource/com/sun/tools/javac/messages.properties,
+ * resource/gnu/classpath/tools/appletviewer/messages.properties,
+ * resource/gnu/classpath/tools/common/Messages.properties,
+ * resource/gnu/classpath/tools/getopt/Messages.properties,
+ * resource/gnu/classpath/tools/jar/messages.properties,
+ * resource/gnu/classpath/tools/jarsigner/messages.properties,
+ * resource/gnu/classpath/tools/keytool/messages.properties,
+ * resource/gnu/classpath/tools/native2ascii/messages.properties,
+ * resource/gnu/classpath/tools/orbd/messages.properties,
+ * resource/gnu/classpath/tools/rmic/messages.properties,
+ * resource/gnu/classpath/tools/rmid/messages.properties,
+ * resource/gnu/classpath/tools/rmiregistry/messages.properties,
+ * resource/gnu/classpath/tools/serialver/messages.properties,
+ * resource/gnu/classpath/tools/tnameserv/messages.properties,
+ * resource/sun/rmi/rmic/messages.properties:
+ Removed.
+ * tools/Makefile.am:
+ Copy .jav template files and use resource subdirectory
+ of tools.
+ * tools/gnu/classpath/tools/rmic/templates/ImplTie.jav,
+ * tools/gnu/classpath/tools/rmic/templates/Stub.jav,
+ * tools/gnu/classpath/tools/rmic/templates/StubMethod.jav,
+ * tools/gnu/classpath/tools/rmic/templates/StubMethodVoid.jav,
+ * tools/gnu/classpath/tools/rmic/templates/Stub_12.jav,
+ * tools/gnu/classpath/tools/rmic/templates/Stub_12Method.jav,
+ * tools/gnu/classpath/tools/rmic/templates/Stub_12MethodVoid.jav,
+ * tools/gnu/classpath/tools/rmic/templates/Tie.jav,
+ * tools/gnu/classpath/tools/rmic/templates/TieMethod.jav,
+ * tools/gnu/classpath/tools/rmic/templates/TieMethodVoid.jav:
+ Removed.
+ * tools/resource/com/sun/tools/javac/messages.properties,
+ * tools/resource/gnu/classpath/tools/appletviewer/messages.properties,
+ * tools/resource/gnu/classpath/tools/common/Messages.properties,
+ * tools/resource/gnu/classpath/tools/getopt/Messages.properties,
+ * tools/resource/gnu/classpath/tools/jar/messages.properties,
+ * tools/resource/gnu/classpath/tools/jarsigner/messages.properties,
+ * tools/resource/gnu/classpath/tools/keytool/messages.properties,
+ * tools/resource/gnu/classpath/tools/native2ascii/messages.properties,
+ * tools/resource/gnu/classpath/tools/orbd/messages.properties,
+ * tools/resource/gnu/classpath/tools/rmic/messages.properties,
+ * tools/resource/gnu/classpath/tools/rmic/templates/ImplTie.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/Stub.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/StubMethod.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/StubMethodVoid.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/Stub_12.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/Stub_12Method.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/Stub_12MethodVoid.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/Tie.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/TieMethod.jav,
+ * tools/resource/gnu/classpath/tools/rmic/templates/TieMethodVoid.jav,
+ * tools/resource/gnu/classpath/tools/rmid/messages.properties,
+ * tools/resource/gnu/classpath/tools/rmiregistry/messages.properties,
+ * tools/resource/gnu/classpath/tools/serialver/messages.properties,
+ * tools/resource/gnu/classpath/tools/tnameserv/messages.properties,
+ * tools/resource/sun/rmi/rmic/messages.properties:
+ Added.
+
+2008-02-18 Roman Kennke <kennke@aicas.com>
- * native/jni/java-nio/Makefile.am (LIBADD): Add libclasspathnative.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (RENDER_OPAQUE): New constant with system property to
+ turn on opaque image rendering.
+ (rawDrawImage): Render images opaque when system property
+ is set. This is for demonstration and debugging purposes only.
+
+2008-02-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/java/awt/image/AsyncImage.java: New file. Implements
+ asynchronous image loading.
+ * gnu/java/awt/image/ImageConverter.java: New file.
+ An image consumer that creates a concrete image with
+ asynchronous behaviour.
+ * gnu/java/awt/peer/x/ImageConverter.java: Removed.
+ * gnu/java/awt/peer/x/XToolkit.java:
+ (createImage(ImageProducer)): Use new ImageConverter.
+ * gnu/java/awt/peer/x/XGraphics2D.java:
+ (rawDrawImage): Unwrap AsyncImages before painting.
+ (unwrap): New helper method.
-2007-03-28 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-02-18 Jakub Jelinek <jakub@redhat.com>
- * javax/management/StandardMBean.java:
- (setAttribute(Attribute)): Add handling of primitive
- types and subtype parameters.
- (getMutator(String,Class<?>)): New helper method to
- return the mutator.
-
-2007-03-28 Roman Kennke <roman@kennke.org>
-
- * java/io/OutputStreamWriter.java,
- * java/io/InputStreamReader.java: Revert big stream patch due to
- problems.
-
-2007-03-28 Tom Tromey <tromey@redhat.com>
-
- PR classpath/31303:
- * external/sax/org/xml/sax/helpers/XMLReaderFactory.java
- (createXMLReader): Code in Classpath default.
-
-2007-03-28 Tom Tromey <tromey@redhat.com>
-
- PR classpath/31276:
- * native/jni/java-lang/java_lang_VMDouble.c
- (parseDoubleFromChars): Use %p, not %i.
-
-2007-03-28 Mark Wielaard <mark@klomp.org>
-
- * native/jni/java-nio/Makefile.am (LIBADD): Don't add
- libclasspathnative.
- * native/jni/java-nio/gnu_java_nio_VMChannel.c
- (Java_gnu_java_nio_VMChannel_open): Don't set and reset umask.
-
-2007-03-27 Francis Kung <fkung@redhat.com>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
- (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Prevent loading of
- accessibility modules as temporary workaround for Gnome bug.
-
-2007-03-27 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpth/jdwp/processor/ThreadReferenceCommandSet.java
- (executeResume): Change to call VMVirtualMachine.resumeThread.
-
-2007-03-27 Roman Kennke <roman@kennke.org>
-
- * java/io/InputStreamReader.java
- (BUFFER_SIZE): New constant.
- (bytesCache): Removed.
- (cacheLock): Removed.
- (hasSavedSurrogate): Removed.
- (lastArray): New field. Used for caching CharBuffers.
- (lastBuffer): New field. Used for caching CharBuffers.
- (maxBytesPerChar): Removed.
- (oneChar): New field. Caches a char array for read().
- (savedSurrogate): New field.
- (InputStreamReader): (all constructors) Cleaned up.
- Use initDecoderAndBuffer() method. Check for null parameters.
- Use new EncodingHelper.getDefaultCharset() for fetching the
- default charset.
- (decode): New helper method. Decodes using the NIO decoder or
- using a raw Latin1 decoding.
- (getCharBuffer): New helper method. Implements caching of
- CharBuffers for output arrays.
- (initDecoderAndBuffer): New helper method. Initializes the decoder
- and input buffer.
- (read): Use cached array.
- (read(char[],int,int)): Reworked using a cleaner NIO based
- implementation. This decodes the incoming data in bigger chunks
- rather then calling the decoder for each character.
- (ready): Also check the input buffer.
- (refillInputBuffer): New helper methods. Refills the input buffer
- when it runs out of data.
- * java/io/OutputStreamWriter.java
- (lastArray): Implements caching of the output array buffer.
- (lastBuffer): Implements caching of the output array buffer.
- (oneChar): New field. Caches a char array for write().
- (outputBuffer): Make this a ByteBuffer.
- (OutputStreamWriter): (all constructors) Cleaned up.
- Use initEncoderAndBuffer() method. Check for null parameters.
- Use new EncodingHelper.getDefaultCharset() for fetching the
- default charset.
- (encode): New helper method. Encodes the input buffer to the output
- buffer using either the NIO encoder or a raw Latin1 encoding.
- (encodeChars): New helper method. The encoding loop.
- (flush): Directly use the array of the output buffer.
- (getCharBuffer): New helper method. Implements caching of the
- output buffer.
- (initEncoderAndBuffer): New helper method for initialization.
- (write(char[],int,int)): Reworked to make better use of the NIO
- encoders.
- (write): Use cached array.
- (write(String,int,int)): Don't copy the string but rather wrap it
- and handle it the same as the wrapped char array.
- (writeConvert): Removed.
- * gnu/java/nio/charset/EncodingHelper.java
- (getDefaultCharset): New method. Returns the default charset for
- the case when the file.encoding charset is not valid. This
- always returns an UTF8 codec.
-
-2007-03-27 Roman Kennke <kennke@aicas.com>
-
- * java/awt/Frame.java
- (weakFrames): Make this generic and package private.
- (noteFrame): Use generic WeakReference.
- * java/awt/EventQueue.java
- (isShutdown): Iterate over the weakFrames directly, rather than
- using Frame.getFrames(). The latter iterates several times over
- weakFrames completely and creates a new array on each call. The
- former iterates only once and aborts when it finds a frame which
- is displayable.
-
-2007-03-27 Roman Kennke <kennke@aicas.com>
-
- * javax/swing/JScrollBar.java
- (getUnitIncrement(int)): Don't multiply direction parameter.
- (getBlockIncrement(int)): Don't multiply direction parameter.
-
-2007-03-26 Tom Tromey <tromey@redhat.com>
-
- * doc/cp-tools.texinfo (gcjh Tool): Added more text.
- (rmid Tool): Likewise.
-
-2007-03-26 Stepan Kasal <skasal@redhat.com>
-
- * tools/gnu/classpath/tools/javah/Main.java (cniOrJniSeen): New
- field.
- (getParser): Use new field.
-
-2007-03-25 Dalibor Topic <robilad@kaffe.org>
-
- * doc/cp-tools.texinfo: Fix node ordering.
-
-2007-03-19 Matthias Klose <doko@ubuntu.com>
-
- * doc/Makefile.am: Build a gcjh(1) man page.
- * doc/cp-tools.texinfo: Add documentation for gcjh.
-
-2007-03-23 Jeroen Frijters <jeroen@frijters.net>
-
- * java/net/ServerSocket.java (implAccept): set implCreated flag on
- socket.
- * java/net/Socket.java (implCreated): Make package accessible for
- ServerSocket.
-
-2007-03-22 Casey Marshall <csm@gnu.org>
-
- * gnu/javax/net/ssl/provider/ClientHandshake.java (RSAGen.implRun):
- check keyEncipherment bit of the certificate, and just pass the public
- key to the cipher.
-
-2007-03-20 Mario Torre <neugens@limasoftware.net>
-
- * configure.ac: GConf requirement for building the java.util.prefs backend
- are relaxed down to version 2.6.0 (instead of 2.11.2).
-
-2007-03-19 Mario Torre <neugens@limasoftware.net>
-
- * gnu/java/awt/peer/KDEDesktopPeer.java:
- (mail): Fixed error dialog in KDE when the mail method is called without
- argument; now opens the default mailer with a blank window.
- (getCommand): Handle the use of kprinter as default print command for KDE.
- (supportCommand): Enable the print command when a KDE desktop is detected.
-
-2007-03-19 Jeroen Frijters <jeroen@frijters.net>
-
- * java/net/Socket.java
- (implCreated): New field.
- (getImpl): Call impl.create() if it hasn't been called yet.
- (bind): Removed explicit impl.create() call.
-
-2007-03-18 Mark Wielaard <mark@klomp.org>
+ * doc/cp-tools.texinfo (@direntry): Prefix info name with cp-.
+ * doc/cp-hacking.texinfo (@direntry): Likewise.
+ * doc/cp-vmintegration.texinfo (@direntry): Likewise.
- * javax/crypto/CipherOutputStream.java (write): Use out.write()
- not super.write().
+2008-02-18 Roman Kennke <kennke@aicas.com>
-2007-03-18 Mark Wielaard <mark@klomp.org>
+ * java/awt/image/RGBImageFilter.java
+ (setPixels): Don't mask the source pixel.
- * configure.ac (COMPILE_PLUGIN): Check for gtk+-2.0 >= 2.8
- gthread-2.0 >= 2.2 and gdk-pixbuf-2.0
+2008-02-18 Roman Kennke <kennke@aicas.com>
-2007-03-16 Tom Tromey <tromey@redhat.com>
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (rawDrawImage): Update the rgb variable correctly. Don't
+ cache translucent images.
- * tools/gnu/classpath/tools/javah/Main.java (run): Use class'
- name in File case.
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-03-16 Thomas Fitzsimmons <fitzsim@redhat.com>
+ * vm/reference/java/lang/reflect/Constructor.java,
+ * vm/reference/java/lang/reflect/Method.java:
+ Add missing java.lang.annotation.Annotation import.
- * resource/com/sun/tools/javac/messages.properties
- (Main.FailedToRead, Main.MalformedURL, Main.FailedToLoad): Clarify
- messages for when --with-ecj-jar is not specified.
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * configure.ac (FOUND_ECJ_JAR): Remove conditional.
- * tools/Makefile.am: Build com.sun.tools.javac package
- unconditionally.
+ * vm/reference/java/lang/reflect/Constructor.java,
+ * vm/reference/java/lang/reflect/Method.java:
+ (getParameterAnnotations()): Added.
+
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/swing/tree/DefaultMutableTreeNode.java:
+ Add generics.
+ * javax/swing/tree/DefaultTreeCellEditor.java:
+ (tPath): Removed.
+ (configureEditingComponent(JTree,
+ DefaultTreeCellRenderer,TreeCellEditor)): Removed.
+ * javax/swing/tree/DefaultTreeCellRenderer.java:
+ Removed unused call to getIcon().
+ * javax/swing/tree/DefaultTreeSelectionModel.java:
+ Add generics.
+
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/swing/tree/FixedHeightLayoutCache.java,
+ * javax/swing/tree/VariableHeightLayoutCache.java,
+ * javax/swing/undo/StateEdit.java:
+ Use type parameters with collections classes.
+
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * m4/ac_prog_javac.m4:
+ Turn off ecj warnings for deprecation,
+ serialization and unused imports
+ (both cases).
+
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * m4/ac_prog_javac.m4:
+ Turn off ecj warnings for deprecation,
+ serialization and unused imports.
+
+2008-02-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-03-16 Mark Wielaard <mark@klomp.org>
+ * org/omg/CORBA/PolicyErrorHelper.java,
+ * org/omg/CORBA/UnknownUserExceptionHelper.java,
+ * org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateNameHelper.java,
+ * org/omg/PortableServer/ForwardRequestHelper.java,
+ * org/omg/PortableServer/POAPackage/InvalidPolicyHelper.java:
+ Remove unused variable.
- * configure.ac (COMPILE_PLUGIN): Stop when no plugin headers found.
- Also check for gtk+ dependency.
+2008-02-16 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-03-16 Tom Tromey <tromey@redhat.com>
+ * gnu/classpath/ServiceFactory.java:
+ Use generics.
+ * gnu/classpath/ServiceProviderLoadingAction.java:
+ Likewise.
+
+2008-02-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * tools/gnu/classpath/tools/javah/JniStubPrinter.java
- (printClass): Added filename argument.
- * tools/gnu/classpath/tools/javah/JniIncludePrinter.java
- (printClass): Added filename argument.
- * tools/gnu/classpath/tools/javah/CniIncludePrinter.java
- (printClass): Use user's file name.
- * tools/gnu/classpath/tools/javah/CniStubPrinter.java
- (printClass): Use user's file name.
- * tools/gnu/classpath/tools/javah/Printer.java (printClass): Added
- filename argument.
- * tools/gnu/classpath/tools/javah/Main.java (getParser): Fix '-v'
- argument order.
- (writeHeaders): Use a HashMap.
- (run): Put class name into HashMap for writeHeaders.
-
-2007-03-16 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (cairoArc): Make protected rather than private so it can be over-ridden.
- (cairoClip): Likewise.
- (cairoClosePath): Likewise.
- (cairoCurveTo): Likewise.
- (cairoDrawGlyphVector): Likewise.
- (cairoFill): Likewise.
- (cairoLineTo): Likewise.
- (cairoMoveTo): Likewise.
- (cairoNewPath): Likewise.
- (cairoRectangle): Likewise.
- (cairoResetClip): Likewise.
- (cairoRestore): Likewise.
- (cairoSave): Likewise.
- (cairoScale): Likewise.
- (cairoSetAntialias): Likewise.
- (cairoSetDash): Likewise.
- (cairoSetFillRule): Likewise.
- (cairoSetFont): Likewise.
- (cairoSetLine): Likewise.
- (cairoSetMatrix): Likewise.
- (cairoSetOperator): Likewise.
- (cairoSetRGBAColor): Likewise.
- (cairoStroke): Likewise.
- (drawPixels): Likewise.
- (init): Likewise.
- (setGradient): Likewise.
- (setPaintPixels): Likewise.
- (cairoDrawLine): Removed.
- (cairoDrawRect): Removed.
- (cairoFillRect): Removed.
- (cairoPreserveClip): Removed.
- (cairoRelCurveTo): Removed.
- (cairoRelLineTo): Removed.
- (cairoRelMoveTo): Removed.
- * gnu/java/awt/peer/gtk/ComponentGraphics.java
- (cairoArc): New method wrapping superclass method in locks.
- (cairoClip): Likewise.
- (cairoClosePath): Likewise.
- (cairoCurveTo): Likewise.
- (cairoDrawGlyphVector): Likewise.
- (cairoFill): Likewise.
- (cairoLineTo): Likewise.
- (cairoMoveTo): Likewise.
- (cairoNewPath): Likewise.
- (cairoRectangle): Likewise.
- (cairoResetClip): Likewise.
- (cairoRestore): Likewise.
- (cairoSave): Likewise.
- (cairoScale): Likewise.
- (cairoSetAntialias): Likewise.
- (cairoSetDash): Likewise.
- (cairoSetFillRule): Likewise.
- (cairoSetFont): Likewise.
- (cairoSetLine): Likewise.
- (cairoSetMatrix): Likewise.
- (cairoSetOperator): Likewise.
- (cairoSetRGBAColor): Likewise.
- (cairoStroke): Likewise.
- (disposeNative): Likewise.
- (drawPixels): Likewise.
- (init): Likewise.
- (setGradient): Likewise.
- (setPaintPixels): Likewise.
- (draw): Do not lock, as locking is now done in the wrapped native methods.
- (drawComposite): Likewise.
- (drawGlyphVector): Likewise.
- (drawImage): Likewise.
- (drawRenderedImage): Likewise.
- (fill): Likewise.
- (setClip): Removed.
- (lock): Added documentation.
- (unlock): Added documentation.
- * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: Regenerated.
- * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawLine): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawRect): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFillRect): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo): Removed.
-
-2007-03-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/openmbean/ArrayType.java:
- (getArrayClassName(String, int)): Replaced by...
- (getArrayClassName(OpenType, int, boolean)):
- Returns appropriate class name for the array.
- (getDimensions(OpenType, int)): New method.
- (getPrimitiveType(Class<?>)): Likewise.
- (getPrimitiveTypeClass(OpenType<?>)): Likewise.
- (getElementType(OpenType<?>)): Likewise.
- (getElementTypeName(OpenType<?>)): Likewise.
- (ArrayType(int, OpenType<?>)): Rewritten
- to handle ArrayTypes as input.
- (ArrayType(SimpleType<?>, boolean)): New constructor.
- (equals(Object)): Handle primitiveArray flag.
- (hashCode()): Likewise.
- (getArrayType(OpenType<E>)): New method.
- (getPrimitiveArrayType(Class<T>)): Likewise.
- (isPrimitiveArray()): Likewise.
- (toString()): Updated to list primitiveArray
- flag.
- * javax/management/openmbean/OpenType.java:
- (OpenType(String,String,String)): Use Class.forName()
- and methods of Class to validate arrays.
- * javax/management/openmbean/SimpleType.java:
- Include causal exception when creating pre-defined types
- throws an exception.
+ PR classpath/34579:
+ * m4/ac_prog_javac_works.m4: Change test
+ to one that doesn't rely on the compiler's
+ class library.
-2007-03-09 Andreas Tobler <a.tobler@schweiz.org>
-
- Port change from gcc:
-
- 2007-03-06 Matthias Klose <doko@ubuntu.com>
-
- * doc/Makefile.am(gkeytool.pod): Don't use sed -i.
-
-2007-03-09 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/exception/InvalidTagException.java: New file.
- * gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java
- (executeGetValues): Use Value type.
- (exectureSetValues): Ditto.
- * gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
- (executeGetValues): Use Value type.
- (executeSetValues): Ditto.
- (invokeMethod): Record method return type.
- * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java
- (executeGetValues): Use Value type.
- (executeSetValues): Ditto.
- * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
- (executeGetValues): Use Value type.
- * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
- (executeGetValues): Use Value type.
- (executeSetValues): Ditto.
- * gnu/classpath/jdwp/util/MethodResult.java: Add resType to store return
- type.
- (getResultType): New Method.
- (setResultType): Ditto.
- * gnu/classpath/jdwp/util/Value.java: Remove.
- * gnu/classpath/jdwp/value: New Package.
- * gnu/classpath/jdwp/value/Value.java: New file.
- * gnu/classpath/jdwp/value/BooleanValue.java: New file.
- * gnu/classpath/jdwp/value/ByteValue.java: New file.
- * gnu/classpath/jdwp/value/CharValue.java: New file.
- * gnu/classpath/jdwp/value/DoubleValue.java: New file.
- * gnu/classpath/jdwp/value/FloatValue.java: New file.
- * gnu/classpath/jdwp/value/IntValue.java: New file.
- * gnu/classpath/jdwp/value/LongValue.java: New file.
- * gnu/classpath/jdwp/value/ObjectValue.java: New file.
- * gnu/classpath/jdwp/value/ShortValue.java: New file.
- * gnu/classpath/jdwp/value/StringValue.java: New file.
- * gnu/classpath/jdwp/value/ValueFactory.java: New file.
- * gnu/classpath/jdwp/value/VoidValue.java: New file.
-
-2007-03-09 Roman Kennke <kennke@aicas.com>
-
- * java/awt/image/SinglePixelPackageSampleModel.java
- (createDataBuffer): Avoid use of Buffers class and create
- DataBuffer directly in place.
-
-2007-03-09 Roman Kennke <kennke@aicas.com>
-
- * java/awt/image/ComponentSampleModel.java
- (tightPixelPacking): Removed.
- (ComponentSampleModel): Removed unnecessary 'optimization' code.
- (createDataBuffer): Avoid use of Buffers helper class.
- (getDataElements(int,int,int,int,Object,DataBuffer): Removed.
- (getDataElements(int,int,Object,DataBuffer): Do not use Buffers
- helper class and instead fetch the values directly. Don't expect
- any specific DataBuffer subclass.
- (setDataElements(int,int,int,int,Object,DataBuffer): Removed.
- (setDataElements(int,int,Object,DataBuffer): Do not use Buffers
- helper class and instead set the values directly. Don't expect
- any specific DataBuffer subclass.
-
-2007-03-08 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/31093:
- * java/net/MulticastSocket.java (setTimeToLive): Allow ttl==0.
-
-2007-03-08 Gary Benson <gbenson@redhat.com>
-
- PR classpath/30983:
- * gnu/xml/dom/ls/DomLSParser.java (getInputSource):
- Do not use the entity resolver to resolve the top-level document.
-
-2007-03-07 Tom Tromey <tromey@redhat.com>
-
- PR classpath/31057:
- * java/util/regex/Pattern.java (toString): New method.
-
-2007-03-07 Gary Benson <gbenson@redhat.com>
-
- PR classpath/30906:
- * resource/META-INF/services/org.w3c.dom.DOMImplementationSourceList:
+2008-02-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34578:
+ * NEWS: Mention javah and javac build changes.
+ * configure.ac: Call AC_PROG_JAVAC and
+ CLASSPATH_JAVAC_MEM_CHECK instead of CLASSPATH_FIND_JAVAC.
+ * examples/Makefile.am: Simplify compiler choice
+ to just use JAVAC.
+ * lib/Makefile.am: Likewise, but with JAVAC_MEM_OPT too.
+ * m4/ac_prog_javac.m4: New file.
+ * m4/ac_prog_javac_works.m4: Likewise.
+ * m4/acinclude.m4:
+ (CLASSPATH_FIND_JAVAC): Removed.
+ (CLASSPATH_WITH_GCJ): Removed.
+ (CLASSPATH_CHECK_GCJ): Removed.
+ (CLASSPATH_WITH_JIKES): Removed.
+ (CLASSPATH_CHECK_JIKES): Removed.
+ (CLASSPATH_WITH_KJC): Removed.
+ (CLASSPATH_CHECK_KJC): Removed.
+ (CLASSPATH_WITH_ECJ): Removed.
+ (CLASSPATH_CHECK_ECJ): Removed.
+ (CLASSPATH_WITH_JAVAC): Removed.
+ (CLASSPATH_CHECK_JAVAC): Removed.
+ (CLASSPATH_JAVAC_MEM_CHECK): Added.
+ * tools/Makefile.am: Simplify compiler choice
+ to just javac.
+
+2008-02-12 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/color/ICC_Profile.java
+ (getInstance()): Wrap call to InputStream.read(byte[],int,int) in
+ a loop, in order to read the whole thing.
+
+2008-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/remote/NotificationResult.java:
New file.
-
-2007-03-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * gnu/java/lang/management/BeanImpl.java:
- (translate(String)): Add horrible generics hacks
- to make things work with the new type signatures.
- * javax/management/loading/ClassLoaderRepository.java:
- Added generic types.
- * javax/management/openmbean/CompositeDataSupport.java:
- Likewise.
- * javax/management/openmbean/OpenMBeanOperationInfo.java:
- Likewise.
- * javax/management/openmbean/OpenMBeanParameterInfo.java:
+ * javax/management/remote/TargetedNotification.java:
Likewise.
+ * javax/management/remote/rmi/RMIConnection.java:
+ (fetchNotifications(long,int,long)): Added.
+
+2008-02-10 Dalibor Topic <robilad@kaffe.org>
-2007-03-06 Francis Kung <fkung@redhat.com>
+ * lib/Makefile.am (compile_classpath), include/Makefile.am (JAVAH):
+ Replaced USER_CLASSLIB with PATH_TO_GLIBJ_ZIP.
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
- (getGlyphOutline): Apply glyph position translation.
- (getOutline): Do not apply glyph position translation.
+ * m4/acinclude.m4 (CLASSPATH_WITH_CLASSLIB)[--with-classpath]:
+ Removed unused option. It's superceded by --with-glibj-zip.
-2007-03-06 Tom Tromey <tromey@redhat.com>
+2008-02-10 Dalibor Topic <robilad@kaffe.org>
- * tools/gnu/classpath/tools/javah/Main.java (getName): New
- method.
- (getParser): Now protected. Use getName. Add '-v' alias for
- --verbose.
- (postParse): New method.
- (run): Now protected. Use postParse.
- * tools/gnu/classpath/tools/javah/GcjhMain.java: New file.
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAH)[USER_JAVAH]:
+ Check for gjavah-4.3.
-2007-03-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-02-10 Mark Wielaard <mark@klomp.org>
- * gnu/javax/management/Translator.java:
- (translate(String)): Use a Boolean array to
- comply with the new typing.
- * javax/management/openmbean/ArrayType.java:
- Added generic types and updated copyright headers.
- * javax/management/openmbean/CompositeData.java:
- Likewise.
- * javax/management/openmbean/CompositeDataSupport.java:
- Likewise.
- * javax/management/openmbean/CompositeType.java:
- Likewise.
- * javax/management/openmbean/OpenMBeanAttributeInfoSupport.java:
- Likewise.
- * javax/management/openmbean/OpenMBeanOperationInfoSupport.java:
- Likewise.
- * javax/management/openmbean/OpenMBeanParameterInfoSupport.java:
- Likewise.
- * javax/management/openmbean/OpenType.java:
- Updated copyright header.
- * javax/management/openmbean/SimpleType.java:
- Added generic types and updated copyright headers.
- * javax/management/openmbean/TabularData.java:
- Likewise.
- * javax/management/openmbean/TabularDataSupport.java:
- Likewise.
- * javax/management/openmbean/TabularType.java:
- Likewise.
+ * scripts/check_jni_methods.sh.in:
+ Use abs_src_builddir so that the absolute path
+ to the source directory is used by the script.
-2007-03-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * gnu/java/lang/management/BeanImpl.java:
- Reference the new Translator class.
- (translate(String)): Moved to Translator.
- * gnu/javax/management/Translator.java:
- New file.
- * javax/management/JMX.java:
- Likewise.
- * javax/management/MBeanServerInvocationHandler.java:
+ * scripts/check_jni_methods.sh.in:
+ Use abs_top_builddir so that the absolute path
+ to the build directory is used by the script.
+
+2008-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/remote/rmi/RMIConnection.java:
+ (addNotificationListeners(ObjectName[],
+ MarshalledObject[], Subject[])): Fixed return type.
+ (close()): Added.
+ (createMBean(String,ObjectName,MarshalledObject,
+ String[], Subject)): Likewise.
+ (createMBean(String,ObjectName,ObjectName,
+ MarshalledObject, String[], Subject)): Likewise.
+ (createMBean(String,ObjectName,ObjectName,
+ Subject)): Likewise.
+ (createMBean(String,ObjectName,Subject)): Likewise.
+ (getAttribute(ObjectName,String,Subject)): Likewise.
+ (getAttributes(ObjectName,String[],Subject)): Likewise.
+ (getConnectionId()): Likewise.
+ (getDefaultDomain(Subject)): Likewise.
+ (getDomains(Subject)): Likewise.
+ (getMBeanCount(Subject)): Likewise.
+ (getMBeanInfo(ObjectName,Subject)): Likewise.
+ (getObjectInstance(ObjectName,Subject)): Likewise.
+ (invoke(ObjectName,String,MarshalledObject,String[],
+ Subject)): Likewise.
+ (isInstanceOf(ObjectName,String,Subject)): Likewise.
+ (isRegistered(ObjectName,Subject)): Likewise.
+ (queryMBeans(ObjectName,MarshalledObject,Subject)): Likewise.
+ (queryNames(ObjectName,MarshalledObject,Subject)): Likewise.
+ (removeNotificationListener(ObjectName,ObjectName,MarshalledObject,
+ MarshalledObject,Subject)): Likewise.
+ (removeNotificationListener(ObjectName,ObjectName,Subject)):
Likewise.
- * javax/management/MXBean.java:
+ (removeNotificationListeners(ObjectName,Integer[],Subject)):
Likewise.
- * javax/management/ObjectName.java:
- (ObjectName(String)): Catch a key without a value.
- * javax/management/StandardMBean.java:
- (StandardMBean(Class<?>)): Handle MXBeans.
- (StandardMBean(Object, Class<?>)): Likewise.
- (invoke(String,Object[],String[])): Disallow
- calling attribute methods and handle null signatures.
- (setAttribute(Attribute)): Search for mutators
- with the appropriate signature.
- * javax/management/openmbean/OpenType.java:
- Add generic typing.
- (ALLOWED_CLASSNAMES_LIST): New field.
-
-2007-03-02 Mario Torre <neugens@limasoftware.net>
+ (setAttribute(ObjectName,MarshalledObject,Subject)): Likewise.
+ (setAttributes(ObjectName,MarshalledObject,Subject)): Likewise.
+ (unregisterMBean(ObjectName,Subject)): Likewise.
- PR classpath/31017:
- committed for Petteri Räty <betelgeuse@gentoo.org>
- * configure.ac: fix broken build for gcj browser plugin
-
-2007-03-02 Mario Torre <neugens@limasoftware.net>
-
- * java/awt/Desktop.java: new java 1.6 class.
- * java/awt/peer/DesktopPeer.java: new inteface.
- * gnu/java/awt/peer/GnomeDesktopPeer.java: new class.
- * gnu/java/awt/peer/ClasspathDesktopPeer.java: new class.
- * gnu/java/awt/peer/KDEDesktopPeer.java: new class.
- * java/awt/Toolkit.java (createDesktopPeer): new method to support the
- creation of DesktopPeer instances.
- * gnu/java/awt/peer/qt/QtToolkit.java: update copyright notice and
- organize import.
- * gnu/java/awt/ClasspathToolkit.java (createDesktopPeer): new method.
-
-2007-02-28 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/processor/EventRequestCommandSet.java
- (executeSet): Check if VM has capability for field access
- or modification events.
- * gnu/classpath/jdwp/processor/MethodCommandSet.java
- (executeByteCodes): Check if VM has capability and
- implement.
- * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java
- (executeMonitorInfo): Likewise.
- * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
- (executeSourceDebugExtension): Likewise.
- * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
- (executePopFrames): Likewise.
- * gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java
- (executeOwnedMonitors): Likewise.
- (executeCurrentContendedMonitor): Likewise.
- * gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java
- (executeCapabilities): Rewrite using new VMVirtualMachine
- capabilities.
- (executeRedefineClasses): Check if VM has capability and
- implement.
- (executeSetDefaultStratum): Likewise.
- * gnu/classpath/jdwp/util/MonitorInfo.java; New file.
- * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
- (canWatchFieldModification): New class constant.
- (canWatchFieldAccess): Likewise.
- (canGetBytecodes): Likewise.
- (canGetSyntheticAttribute): Likewise.
- (canGetOwnedMonitorInfo): Likewise.
- (canGetCurrentContendedMonitor): Likewise.
- (canGetMonitorInfo): Likewise.
- (canRedefineClasses): Likewise.
- (canAddMethod): Likewise.
- (canUnrestrictedlyRedefineClasses): Likewise.
- (canPopFrames): Likewise.
- (canUseInstanceFilters): Likewise.
- (canGetSourceDebugExtension): Likewise.
- (canRequestVMDeathEvent): Likewise.
- (canSetDefaultStratum): Likewise.
- (redefineClasses): New method.
- (setDefaultStratum): Likewise.
- (getSourceDebugExtension): Likewise.
- (getBytecodes): Likewise.
- (getMonitorInfo): Likewise.
- (getOwnedMonitors): Likewise.
- (getCurrentContendedMonitor): Likewise.
- (popFrames): Likewise.
-
-2007-03-01 Roman Kennke <kennke@aicas.com>
-
- * java/awt/Canvas.java
- (graphicsConfiguration): Removed duplicate (from Component) field.
- (Canvas(GraphicsConfiguration)): Set the Component's graphicsConfig
- field.
- (getGraphicsConfigurationImpl): Removed.
- * java/awt/Component.java
- (getGraphicsConfiguration): Moved implementation here. Synchronize
- on tree lock to prevent threading nastiness. Don't query peer
- and instead return the setting of the graphicsConfig field.
- (getGraphicsConfigurationImpl): Removed.
- * java/awt/Window.java
- (graphicsConfiguration): Removed duplicate (from Component) field.
- (Window): Set the Component's graphicsConfig field.
- (Window(GraphicsConfiguration)): Set the Component's graphicsConfig
- field.
- (Window(Window,GraphicsConfiguration)): Set the Component's
- graphicsConfig field.
- (getGraphicsConfigurationImpl): Removed.
- (getGraphicsConfiguration): Fetch the local graphics env here
- if not already done and return that.
-
-2007-02-28 Thomas Fitzsimmons <fitzsim@redhat.com>
-
- * INSTALL: Document --with-ecj-jar configure option and ecj jar
- requirement for com.sun.tools.javac support.
- * configure.ac: Add --with-ecj-jar configure option.
- * gnu/classpath/Configuration.java.in (ECJ_JAR): New field.
- * tools/Makefile.am: Build decendents of com and sun directories.
- * resource/com/sun/tools/javac/messages.properties,
- resource/sun/rmi/rmic/messages.properties,
- tools/com/sun/javadoc/ClassDoc.java,
- tools/com/sun/javadoc/ConstructorDoc.java,
- tools/com/sun/javadoc/Doc.java,
- tools/com/sun/javadoc/DocErrorReporter.java,
- tools/com/sun/javadoc/Doclet.java,
- tools/com/sun/javadoc/ExecutableMemberDoc.java,
- tools/com/sun/javadoc/FieldDoc.java,
- tools/com/sun/javadoc/MemberDoc.java,
- tools/com/sun/javadoc/MethodDoc.java,
- tools/com/sun/javadoc/PackageDoc.java,
- tools/com/sun/javadoc/ParamTag.java,
- tools/com/sun/javadoc/Parameter.java,
- tools/com/sun/javadoc/ProgramElementDoc.java,
- tools/com/sun/javadoc/RootDoc.java,
- tools/com/sun/javadoc/SeeTag.java,
- tools/com/sun/javadoc/SerialFieldTag.java,
- tools/com/sun/javadoc/SourcePosition.java,
- tools/com/sun/javadoc/Tag.java,
- tools/com/sun/javadoc/ThrowsTag.java,
- tools/com/sun/javadoc/Type.java,
- tools/com/sun/javadoc/TypeVariable.java,
- tools/com/sun/tools/doclets/Taglet.java,
- tools/com/sun/tools/javac/Main.java,
- tools/com/sun/tools/javac/Messages.java,
- tools/sun/rmi/rmic/Main.java, tools/sun/rmi/rmic/Messages.java:
- New files.
-
-2007-02-28 Keith Seitz <keiths@redhat.com>
-
- * gnu/classpath/jdwp/processor/MethodCommandSet.java
- (executeLineTable): Use ReferenceTypeId instead of
- ClassReferenceTypeId.
- (executeVariableTable): Likewise.
- (executeVariableTableWithGeneric): Fix error message.
- * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
- (executeSignatureWithGeneric): Fix error message.
- (executeFieldWithGeneric): Likewise.
- (executeMethodsWithGeneric): Likewise.
- * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
- (executeGetValues): Use ThreadId instead of ObjectId.
- (executeSetValues): Likewise.
- (executeThisObject): Likewise.
-
-2007-02-28 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/id/NullObjectId.java: New class.
- * gnu/classpath/jdwp/util/NullObject.java: New class.
- * vm/reference/gnu/classpath/jdwp/VMIdManager.java
- (getObjectId): Handle null object.
- (get): Handle objectId of 0.
-
-2007-02-26 Francis Kung <fkung@redhat.com>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Stop using deprecated
- function for creating new font map.
-
-2007-02-26 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (drawCairoSurface): Do not reset clip.
- (drawImage(Image,AffineTransform,Color,ImageObserver)): Likewise.
-
-2007-02-23 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (drawCairoSurface): New method.
- (drawImage(Image,AffineTransform,Color,ImageObserver)): Use new
- drawCairoSurface() method.
- * gnu/java/awt/peer/gtk/CairoSurface.java
- (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): Copy correct
- width/height values, and copy sharedBuffer value.
- (createWritableChild): Remove debug line.
- (drawSurface): Removed method.
- * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
- (drawComposite): Translate image when drawing.
-
-2007-02-23 Gary Benson <gbenson@redhat.com>
- Jakub Jelinek <jakub@redhat.com>
-
- PR libgcj/17002
- PR classpath/28550
- * java/util/Date.java (parse): Properly parse 09:01:02 as
- hours/minutes/seconds, not as hours/minutes/year.
- * java/util/SimpleTimeZone.java (SimpleTimeZone): Simplify
- {start,end}TimeMode constructor by calling shorter constructor,
- set {start,end}TimeMode fields after it returns.
- (setStartRule): Don't adjust startTime into WALL_TIME. Set
- startTimeMode to WALL_TIME.
- (endStartRule): Similarly.
- (getOffset): Handle properly millis + dstOffset overflowing into the
- next day. Adjust startTime resp. endTime based on startTimeMode
- resp. endTimeMode.
- * java/util/TimeZone.java (zoneinfo_dir, availableIDs, aliases0): New
- static fields.
- (timezones): Remove synchronized keyword. Set zoneinfo_dir.
- If non-null, set up aliases0 and don't put anything into
- timezones0.
- (defaultZone): Call getTimeZone instead of timezones().get.
- (getDefaultTimeZone): Fix parsing of EST5 or EST5EDT6. Use
- getTimeZoneInternal instead of timezones().get.
- (parseTime): Parse correctly hour:minute.
- (getTimeZoneInternal): New private method.
- (getTimeZone): Do the custom ID checking first, canonicalize
- ID for custom IDs as required by documentation. Call
- getTimeZoneInternal to handle the rest.
- (getAvailableIDs(int)): Add locking. Handle zoneinfo_dir != null.
- (getAvailableIDs(File,String,ArrayList)): New private method.
- (getAvailableIDs()): Add locking. Handle zoneinfo_dir != null.
- * vm/reference/java/util/VMTimeZone.java (getDefaultTimeZoneId):
- To read /etc/localtime, use ZoneInfo.readTZFile instead of
- VMTimeZone.readtzFile. Get better timezone name for
- /etc/localtime, either if it is a symlink or through
- /etc/sysconfig/clock.
- (readSysconfigClockFile): New static method.
- (readtzFile): Removed.
- * gnu/java/util/ZoneInfo.java: New file.
- * java/lang/System.java: Add gnu.java.util.zoneinfo.dir to comments.
- * NEWS: Documented TimeZone interface changes.
-
-2007-02-23 Francis Kung <fkung@redhat.com>
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
- (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Remove debug line.
-
-2007-02-22 Keith Seitz <keiths@redhat.ecom>
-
- * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
- (getAllLoadedClassesCount): Remove.
- (getAllLoadedClasses): Return a Collection.
- * gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java
- (executeClassesBySignature): VMVirtualMachine.getAllLoadedClasses
- now returns Collection.
- (executeAllClasses): Likewise.
- Get size of return from Colleciton instead of calling
- getAllLoadedClassesCount.
-
-2007-02-22 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
- (executeGetValues): Pass a signature byte to VMFrame.getValue.
- * vm/reference/gnu/classpath/jdwp/VMFrame.java (getValue): Add
- signature parameter.
-
-2007-02-22 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/CairoSurface.java
- (copyAreaNative): Pass surface pointer into copyAreaNative2().
- (copyAreaNative2): Add parameter for surface pointer.
- (getFlippedBuffer): Add parameter for surface pointer.
- (getGtkImage): Pass surface pointer into getFlippedBuffer().
-
-2007-02-21 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/peer/gtk/BufferedImageGraphcs.java
- (constructor): Add pre-multiplied colour model to types available for
- optimization.
- (updateBufferedImage): Change surface.getPixels() call to surface.getData().
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java
- (drawImage): Add checks before using CairoSurface optimization.
- * gnu/java/awt/peer/gtk/CairoSurface.java
- (bufferPointer): Removed field.
- (sharedBuffer): New field.
- (CairoSurface(GtkImage)): Copy array rather than using setPixels() call.
- (CairoSurface(int,int,int)): Use getData() convenience method.
- (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): Remove reference
- to deleted bufferPointer field.
- (copyAreaNative): Update documentation, remove reference to bufferPointer.
- (copyAreaNative2): Remove reference to deleted bufferPointer field.
- (destroy): Remove reference to deleted bufferPointer field.
- (dispose): Updated to reflect new method signature for destroy().
- (drawSurface): Added documentation.
- (getData): New convience method.
- (getFlippedBuffer): Removed method parameters.
- (getGtkImage): Updated to reflect new method signature.
- (getPixels): Removed method.
- (nativeGetElem): Removed method.
- (netiveGetPixels): Removed method.
- (nativeSetElem): Removed method.
- (nativeSetPixels): Removed method.
- (setPixels): Removed method.
- (syncJavaToNative): New method.
- (syncNativeToJava): New method.
- * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
- (draw): Sync buffers if necessary.
- (drawGlyphVector): Likewise.
- (drawImage): Likewise.
- (drawRenderedImage): Likewise,
- (fill): Likewise.
- * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
- (Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative2): Use pointer to
- surface rather than pointer to buffer.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Provide fall-back for
- copied arrays.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_destroy): Handle copied arrays.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer): Retrieve
- information on size using JNI calls.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_getElem): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_setElem): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels): Removed.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_syncJavaToNative): New function.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_syncNativeToJava): New function.
- (BUFFER): Removed constant.
- (SHARED): New constant.
-
-2007-02-20 Gary Benson <gbenson@redhat.com>
-
- * javax/management/ObjectName.java
- (domainMatches): New method.
- (apply): Rearranged to use the above.
-
-2007-02-19 Mark Wielaard <mark@klomp.org>
-
- * doc/.cvsignore: Add *.1.
- * doc/Makefile.am (CLEANFILES): Add Tools_MANFILES.
-
-2007-02-19 Dalibor Topic <robilad@kaffe.org>
-
- * cp-hacking.texinfo, cp-tools.texinfo,
- cp-vmintegration.texinfo: Prefix output file name
- with cp.
-
-2007-02-19 Gary Benson <gbenson@redhat.com>
-
- * javax/management/ObjectName.java
- (properties): Initialize when declared.
- (ObjectName(String)): Don't initialize properties here.
- (ObjectName(String, String, String): Likewise.
-
-2007-02-19 Chris Burdess <dog@gnu.org>
-
- Fixes #30831
- * gnu/xml/dom/ls/SAXEventSink.java: Only set extended document
- properties when reader is available.
-
-2007-02-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/MBeanServer.java:
- (queryMBeans(ObjectName,QueryExp)): Returned
- generically-typed Set.
- (queryNames(ObjectName,QueryExp)): Likewise.
- * javax/management/MBeanServerConnection.java:
- (queryMBeans(ObjectName,QueryExp)): Returned
- generically-typed Set.
- (queryNames(ObjectName,QueryExp)): Likewise.
- * javax/management/ObjectName.java:
- Use a generically-typed TreeMap.
- (ObjectName(String,Hashtable<String,String>):
- Genericized.
- (getKeyPropertyList()): Likewise.
- * javax/management/StandardMBean.java:
- Use a generically-typed interface class.
- (StandardMBean(Class<?>)): Genericized.
- (StandardMBean(T, Class<T>)): Likewise.
- (getImplementationClass()): Likewise.
- (getMBeanInterface()): Likewise.
-
-2007-02-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-02-09 Dalibor Topic <robilad@kaffe.org>
- * javax/management/Descriptor.java:
- New file.
- * javax/management/DescriptorRead.java:
- Likewise.
- * javax/management/DescriptorAccess.java:
- Likewise.
-
-2007-02-16 Matthias Klose <doko@ubuntu.com>
-
- * doc/Makefile.am: Add rules to build and install man pages
- from texinfo docs.
- * doc/hacking.texinfo doc/tools.texinfo, doc/vmintegration.texinfo:
- Rename, prefix files with "cp-".
- * doc/cp-tools.texinfo: Add markup for man page generation,
- add documentation for command line options for gjar, gjavah,
- gnative2ascii, gorbd, grmid, grmiregistry, gserialver, gtnameserv.
- doc/texi2pod.pl: New, taken from the GCC sources.
-
-2007-02-16 Francis Kung <fkung@redhat.com>
-
- * gnu/java/awt/ClasspathGraphicsEnvironment.java: New file.
- * gnu/java/awt/peer/gtk/CairoSurface.java
- (CairoDataBuffer): Removed inner class.
- (CairoSurface(int,int,int,int)): New constructor.
- (CairoSurface(int,int)): Delegate to new constructor.
- (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): New constructor
- for creating child rasters.
- (create): Added int[] parameter.
- (createChild): New method.
- (createCompatibleWritableRaster): New methods.
- (createTranslatedChild): New method.
- (createWritableChild): New method.
- (createWritableTranslatedChild): New method.
- (destroy): Added int[] parameter.
- (dispose): Only free native resources if this Surface has no parents.
- (isCompatibleColorModel): New method.
- (isCompatibleSampleModel): New method.
- * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
- (draw): Set transform, smarter bounds generation.
- (drawComposite): Improved clipping.
- (drawImage): Fixed bounds translation.
- (drawRenderedImage): Set transform in buffer.
- (fill): Set transform in buffer.
- * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
- (createRaster): New method.
- * java/awt/image/BufferedImage.java
- (BufferedImage(int,int,int)): Use optimized raster if possible.
- * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
- (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Share data buffer between
- Cairo and Java.
- (Java_gnu_java_awt_peer_gtk_CairoSurface_destroy): Free data array.
-
-2007-02-16 Francis Kung <fkung@redhat.com>
-
- * javax/management/NotificationBroadcasterSupport.java: Update imports.
-
-2007-02-16 Andrew Haley <aph@redhat.com>
-
- * gnu/java/lang/management/MemoryMXBeanImpl.java,
- javax/management/MBeanServerDelegate.java: Use
- gnu.javax.management.ListenerData rather than
- gnu.classpath.ListenerData.
- * gnu/javax/management/ListenerData.java: Move here from
- gnu/classpath/ListenerData.java.
-
-2006-10-14 Edwin Steiner <edwin.steiner@gmx.net>
-
- PR classpath/28652:
- * javax/management/MBeanInfo.java (MBeanInfo):
- Use clone to duplicate the arrays in order to
- preserve the array type.
-
-2007-02-15 Gary Benson <gbenson@redhat.com>
+ * native/jni/Makefile.am (all-local): Call check_jni_methods.sh
+ directly.
- * gnu/javax/management/Server.java
- (registerMBean): Always register objects that implement the
- MBeanRegistration interface, and check the name returned by
- preRegister before using it.
+ * scripts/Makefile.am (EXTRA_DIST): Removed check_jni_methods.sh.
-2007-02-15 Roman Kennke <kennke@aicas.com>
+ * include/Makefile.am (SOUND_H_FILES, GST_PEER_H_FILES)
+ (XMLJ_H_FILES, GTKPEER_H_FILES, QTPEER_H_FILES)
+ (GCONF_PREFS_FILES, H_FILES): Don't generate header files
+ in the source directory, as it may not be writeable.
+ (DISTCLEANFILES) Added H_FILES.
- * java/nio/ByteOrder.java
- (nativeOrder): Avoid NPE when comparing a system property.
+ * configure.ac (AC_CONFIG_FILES): Added
+ scripts/check_jni_methods.sh.
-2007-02-13 Gary Benson <gbenson@redhat.com>
+ * scripts/check_jni_methods.sh: Removed. Moved over to ..
+ * scripts/check_jni_methods.sh.in: New file. Added
+ top_srcdir and top_builddir where necessary.
+
+2008-02-09 Mario Torre <neugens@limasoftware.net>
+
+ * include/java_util_VMTimeZone.h: Removed.
+ * native/jni/gconf-peer/GConfNativePeer.c: all native methods, replaced
+ GConfEngine with GConfClient and use GConfClient API instead.
+
+2008-02-08 Mark Wielaard <mark@klomp.org>
+
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAC): Delete
+ Colour.class.
+
+ * include/.cvsignore: Add java_* and gnu_*.h.
+
+2008-02-08 Mario Torre <neugens@limasoftware.net>
+
+ * configure.ac: --enable-regen-header option now enabled by default.
+ * include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: Removed.
+ * include/gnu_java_awt_peer_gtk_CairoSurface.h: Removed.
+ * include/gnu_java_awt_peer_gtk_ComponentGraphics.h: Removed.
+ * include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: Removed.
+ * include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GdkFontPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GdkRobotPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkButtonPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkChoicePeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkClipboard.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkFramePeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkGenericPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkImage.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkLabelPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkListPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkMenuPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkSelection.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkToolkit.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkVolatileImage.h: Removed.
+ * include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_MainQtThread.h: Removed.
+ * include/gnu_java_awt_peer_qt_QMatrix.h: Removed.
+ * include/gnu_java_awt_peer_qt_QPainterPath.h: Removed.
+ * include/gnu_java_awt_peer_qt_QPen.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtAudioClip.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtButtonPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtCanvasPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtCheckboxPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtChoicePeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtComponentPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtDialogPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtFileDialogPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtFontMetrics.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtFontPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtFramePeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtGraphics.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtImage.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtLabelPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtListPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtMenuBarPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtMenuItemPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtMenuPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtPanelPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtScreenDevice.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtScrollbarPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtScrollPanePeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtTextAreaPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtTextFieldPeer.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtToolkit.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtVolatileImage.h: Removed.
+ * include/gnu_java_awt_peer_qt_QtWindowPeer.h: Removed.
+ * include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h: Removed.
+ * include/gnu_java_net_local_LocalSocketImpl.h: Removed.
+ * include/gnu_java_net_VMPlainSocketImpl.h: Removed.
+ * include/gnu_java_nio_charset_iconv_IconvDecoder.h: Removed.
+ * include/gnu_java_nio_charset_iconv_IconvEncoder.h: Removed.
+ * include/gnu_java_nio_EpollSelectorImpl.h: Removed.
+ * include/gnu_java_nio_FileChannelImpl.h: Removed.
+ * include/gnu_java_nio_KqueueSelectorImpl.h: Removed.
+ * include/gnu_java_nio_VMChannel.h: Removed.
+ * include/gnu_java_nio_VMPipe.h: Removed.
+ * include/gnu_java_nio_VMSelector.h: Removed.
+ * include/gnu_java_util_prefs_gconf_GConfNativePeer.h: Removed.
+ * include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: Removed.
+ * include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: Removed.
+ * include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h: Removed.
+ * include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: Removed.
+ * include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h: Removed.
+ * include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: Removed.
+ * include/gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h: Removed.
+ * include/gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h: Removed.
+ * include/gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeAttr.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeDocument.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeDocumentType.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeElement.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeEntity.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeNode.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeNodeList.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeNotation.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: Removed.
+ * include/gnu_xml_libxmlj_dom_GnomeXPathResult.h: Removed.
+ * include/gnu_xml_libxmlj_sax_GnomeLocator.h: Removed.
+ * include/gnu_xml_libxmlj_sax_GnomeXMLReader.h: Removed.
+ * include/gnu_xml_libxmlj_transform_GnomeTransformer.h: Removed.
+ * include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: Removed.
+ * include/java_io_VMFile.h: Removed.
+ * include/java_io_VMObjectInputStream.h: Removed.
+ * include/java_io_VMObjectStreamClass.h: Removed.
+ * include/java_lang_reflect_VMArray.h: Removed.
+ * include/java_lang_VMDouble.h: Removed.
+ * include/java_lang_VMFloat.h: Removed.
+ * include/java_lang_VMMath.h: Removed.
+ * include/java_lang_VMProcess.h: Removed.
+ * include/java_lang_VMSystem.h: Removed.
+ * include/java_net_VMInetAddress.h: Removed.
+ * include/java_net_VMNetworkInterface.h: Removed.
+ * include/java_net_VMURLConnection.h: Removed.
+ * include/java_nio_MappedByteBufferImpl.h: Removed.
+ * include/java_nio_VMDirectByteBuffer.h: Removed.
+
+2008-02-08 Roman Kennke <kennke@aicas.com>
- * javax/management/ObjectName.java
- (toString): Return this item's canonical name.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
+ * gnu/java/awt/peer/gtk/GtkToolkit.java: Removed mistakenly
+ committed code.
-2007-02-12 Francis Kung <fkung@redhat.com>
+2008-02-08 Roman Kennke <kennke@aicas.com>
- * gnu/java/awt/ClasspathToolkit.java:
- * gnu/java/awt/peer/gtk/AsyncImage.java,
- * gnu/java/awt/peer/gtk/BufferedImageGraphics.java,
* gnu/java/awt/peer/gtk/CairoGraphics2D.java,
- * gnu/java/awt/peer/gtk/CairoSurface.java,
- * gnu/java/awt/peer/gtk/ComponentGraphics.java,
- * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,
* gnu/java/awt/peer/gtk/GdkFontPeer.java,
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
* gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
- * gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
- * gnu/java/awt/peer/gtk/GtkChoicePeer.java,
- * gnu/java/awt/peer/gtk/GtkClipboard.java,
- * gnu/java/awt/peer/gtk/GtkClipboardNotifier.java,
* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
- * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
- * gnu/java/awt/peer/gtk/GtkFramePeer.java,
- * gnu/java/awt/peer/gtk/GtkImage.java,
- * gnu/java/awt/peer/gtk/GtkImageConsumer.java,
- * gnu/java/awt/peer/gtk/GtkLabelPeer.java,
- * gnu/java/awt/peer/gtk/GtkListPeer.java,
- * gnu/java/awt/peer/gtk/GtkMainThread.java,
- * gnu/java/awt/peer/gtk/GtkMenuBarPeer.java,
- * gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java,
- * gnu/java/awt/peer/gtk/GtkMenuPeer.java,
- * gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java,
- * gnu/java/awt/peer/gtk/GtkScrollbarPeer.java,
- * gnu/java/awt/peer/gtk/GtkScrollPanePeer.java,
- * gnu/java/awt/peer/gtk/GtkSelection.java,
- * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java,
- * gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
- * gnu/java/awt/peer/gtk/GtkToolkit.java,
- * gnu/java/awt/peer/gtk/GtkWindowPeer.java,
- * gnu/java/awt/peer/gtk/VolatileImageGraphics.java,
- * java/awt/RenderingHints.java,
- * java/awt/image/BufferedImage.java: Reformatted and added generics.
-
-2007-02-12 Tom Tromey <tromey@redhat.com>
-
- * java/net/Socket.java (bind): Typo fix.
-
-2007-02-12 Tom Tromey <tromey@redhat.com>
-
- * vm/reference/java/lang/reflect/Method.java (getDefaultValue):
- New method.
- * sun/reflect/annotation/AnnotationInvocationHandler.java (create):
- New method.
- (arrayClone): New method.
- (invoke): Clone array return results.
-
-2007-02-12 Jakub Jelinek <jakub@redhat.com>
-
- PR 23566
- * scripts/timezones.pl: Parse each file in 2 passes, in one parse
- just Rule lines, in the other everything else. Pass 0 instead of
- $savings as second argument to parseRule when parsing the start
- rule.
- * java/util/TimeZone.java (timezones): Regenerate from tzdata2007a.
-
-2007-02-12 Jakub Jelinek <jakub@redhat.com>
-
- * vm/reference/java/util/VMTimeZone.java: Rewrite to handle both
- the old 'TZif\0' format and the new one.
- * java/util/TimeZone.java: Handle default (one hour) daylight
- savings.
-
-2007-02-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/Query.java:
- New file.
- * javax/management/StandardMBean.java:
- Use the implementation's class loader.
-
-2007-02-10 Mark Wielaard <mark@klomp.org>
-
- * javax/swing/plaf/metal/MetalFileChooserUI.java: Import Date from
- java.util, not from java.sql.
-
-2007-02-10 Roman Kennke <kennke@aicas.com>
-
- * javax/imageio/stream/ImageOutputStreamImpl.java
- (flushBits): Implemented.
- (writeBit): Implemented.
- (writeBits): Implemented.
-
-2007-02-10 Roman Kennke <kennke@aicas.com>
-
- * javax/swing/TransferHandler.java
- (SwingDragGestureRecognizer): New inner class.
- (SwingDragHandler): New inner class.
- (recognizer): New field.
- (exportAsDrag): Implemented missing method.
-
-2007-02-10 Roman Kennke <kennke@aicas.com>
-
- * java/awt/GraphicsConfiguration.java
- (createCompatibleVolatileImage(int,int,ImageCapabilities): Provide
- default implementation that delegates to
- createCompatibleVolatileImage(int,int).
- (createCompatibleVolatileImage(int,int,ImageCapabilities,int):
- New method from JDK5 spec. Default implementation by delegating to
- (createCompatibleVolatileImage(int,int,int).
-
-2007-02-09 Tom Tromey <tromey@redhat.com>
-
- PR libgcj/30647:
- * configure.ac: Also check for jack/jack.h.
-
-2007-02-09 Mario Torre <neugens@limasoftware.net>
-
- * java/io/File.java: remove import for
- gnu.classpath.NotImplementedException.
- (getUsableSpace): removed stub.
- (getFreeSpace): likewise.
- (getTotalSpace): likewise.
-
-2007-02-09 Mario Torre <neugens@limasoftware.net>
-
- * vm/reference/java/io/VMFile.java:
- (canExecute): new 1.6 native method.
- (setReadable): likewise.
- (setWritable): likewise.
- (setExecutable): likewise.
- * java/io/File.java: added import for gnu.classpath.NotImplementedException.
- (setReadOnly): new 1.6 method.
- (canExecute): likewise.
- (setReadable): likewise.
- (setWritable): likewise.
- (setExecutable): likewise.
- (getUsableSpace): added stub for new 1.6 method.
- (getFreeSpace): likewise.
- (getTotalSpace): likewise.
- (checkExec): new private method to support new 1.6 additions.
- * native/jni/java-io/java_io_VMFile.c:
- set_file_permissions: new helper function.
- Java_java_io_VMFile_setReadable: new native method to bakcup 1.6 methods
- in VMFile.java.
- Java_java_io_VMFile_setWritable: likewise.
- Java_java_io_VMFile_setExecutable: likewise.
- Java_java_io_VMFile_canExecute: likewise.
- * native/jni/native-lib/cpio.h: added new flags: CPFILE_FLAG_EXEC,
- CPFILE_FLAG_USR and CPFILE_FLAG_OFF.
- cpio_chmod: new function declaration.
- cpio_checkAccess: likewise.
- * native/jni/native-lib/cpio.c:
- cpio_chmod: new function definition.
- cpio_checkAccess: likewise.
-
-2007-02-09 Gary Benson <gbenson@redhat.com>
-
- * javax/management/ObjectName.java
- (quote): Initialize StringBuilder correctly.
-
-2007-02-09 Francis Kung <fkung@redhat.com>
-
- * java/awt/image/BufferedImage: Reformatted.
-
-2007-02-09 Ito Kazumitsu <kaz@maczuka.gcd.org>
-
- Fixes bug #30732
- * gnu/java/util/regex/RETokenChar.java(chain): Check whether the next
- token has a next token.
-
-2007-02-08 Roman Kennke <kennke@aicas.com>
-
- PR 30347
- * javax/swing/JViewport.java
- (scrollRectToVisible): Use correct X/Y offset for calculations.
- (paintBackingStore): Update backbuffer when we are not the paint
- root.
-
-2007-02-08 Roman Kennke <kennke@aicas.com>
-
- * java/awt/image/SinglePixelPackedSampleModel.java
- (getDataElements(int,int,Object,DataBuffer)):
- Replace DataBuffer using method with simple
- switch. This does not check for the exact type (class) of the
- DataBuffer but instead checks the transfer type.
- (getDataElements(int,int,int,intObject,DataBuffer)): Removed.
- (setDataElements): Fixed indentation.
- (setPixels): Removed unused statement.
-
-2007-02-07 Tom Tromey <tromey@redhat.com>
-
- * tools/gnu/classpath/tools/javah/PathOptionGroup.java
- (PathOptionGroup): Allow '-cp' as well.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java: Only call
+ System.loadLibrary() when configured so.
-2007-02-07 Chris Burdess <dog@gnu.org>
+2008-02-08 Dalibor Topic <robilad@kaffe.org>
- Fixes PR 30718.
- * gnu/xml/dom/ls/SAXEventSink.java: Add public accessor/mutators.
- * gnu/xml/transform/XSLURIResolver.java: Add support for custom
- SAXSources without a backing URL or stream.
+ * NEWS: Documented removal of floatToIntBits and doubleToLongBits from
+ VM interface.
-2007-02-06 Tom Tromey <tromey@redhat.com>
+2008-02-08 Dalibor Topic <robilad@kaffe.org>
- PR libgcj/30707:
- * tools/gnu/classpath/tools/javah/JniIncludePrinter.java
- (printClass): Always print a header.
-
-2007-02-06 Chris Burdess <dog@gnu.org>
-
- Fixes PR 27710.
- * gnu/xml/dom/DomDocumentBuilderFactory.java: Fall back to synchronous
- LSParser if implementation does not support asynchronous.
- * gnu/xml/stream/XMLParser.java,
- gnu/xml/stream/XIncludeFilter.java: Use custom code instead of
- java.net.URL to resolve to an an absolute URI, to avoid nonexistent
- protocol handler problems.
-
-2007-02-05 Andrew Haley <aph@redhat.com>
-
- PR cp-tools/30706
- * tools/gnu/classpath/tools/javah/JniIncludePrinter.java:
- (printClass): Replace '/' in filenames with '_'.
- * tools/gnu/classpath/tools/javah/JniStubPrinter.java
- (printClass): Likewise.
-
-2007-02-05 Tom Tromey <tromey@redhat.com>
-
- * java/net/Proxy.java (equals): Handle case where address==null.
- (hashCode): Likewise.
- (toString): Likewise.
-
-2007-02-04 Jeroen Frijters <jeroen@frijters.net>
-
- * java/lang/Class.java
- (newInstance): Moved setAccessible call to helper method.
- (getEnumConstants): Call new helper method to allow values method to be
- called on non-public enum classes.
- (setAccessible): New helper method.
- * java/lang/Enum.java
- (valueOf): Call new helper method in class to allow field value to
- be read on non-public enum classes.
-
-2007-02-04 Jeroen Frijters <jeroen@frijters.net>
-
- Fix for #30693
- * gnu/java/nio/charset/ByteCharset.java
- (ByteCharset.Decoder.decodeLoop): Reset input buffer position if
- the byte read was unmappable.
-
-2007-02-02 Kyle Galloway <kgallowa@redhat.com>
-
- * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
- (executeGetValues): Changed getFrame to use a jlong to pass frameID.
- (executeSetValues): Ditto.
- (executeThisObject): Ditto.
- * vm/reference/gnu/classpath/jdwp/VMFrame.java: Added thread field and a
- constructor used to create VMFrames.
- (getThread): New method.
- * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java(getFrame): Changed
- to take a long instead of a ByteBuffer to pass the frameID.
-
-2007-02-01 Tom Tromey <tromey@redhat.com>
-
- * java/util/logging/LogManager.java (reset): Remove bogus
- 'while'.
-
-2007-01-31 Casey Marshall <csm@gnu.org>
-
- * gnu/javax/net/ssl/Base64.java: move to `gnu/java/util/Base64.java.'
- * gnu/javax/net/ssl/PrivateCredentials.java: clean up unused imports.
- (add): use `gnu.java.util.Base64.'
- * gnu/java/net/protocol/http/Request.java (authenticate): use
- `gnu.java.util.Base64.'
- * tools/gnu/classpath/tools/jarsigner/HashUtils.java (hashStream):
- likewise.
- * tools/gnu/classpath/tools/keytool/CertReqCmd.java (start): likewise.
- * tools/gnu/classpath/tools/keytool/ExportCmd.java (start): likewise.
- * tools/gnu/classpath/tools/keytool/ListCmd.java (printRFC1421):
- likewise.
- * gnu/java/net/Base64.java: removed.
- * gnu/java/security/util/Base64.java: removed.
-
-2007-01-31 Casey Marshall <csm@gnu.org>
-
- Fixes PR classpath/24191.
- Fix suggested by Rafael Teixeira <monoman@gmail.com>.
- * javax/crypto/CipherOutputStream.java (write): check return value
- of `update' for null.
-
-2007-01-31 Tom Tromey <tromey@redhat.com>
-
- * resource/gnu/classpath/tools/jar/messages.properties
- (Main.Stdin): New message.
- * tools/gnu/classpath/tools/jar/Main.java (initializeParser): Add
- '-@' option.
- (readNames): New method.
- (run): Use it.
-
-2007-01-30 Roman Kennke <kennke@aicas.com>
+ * vm/reference/java/lang/VMFloat.java (floatToIntBits): Removed unused
+ method.
- PR 20577
- * javax/swing/DefaultDesktopManager.java
- (activateFrame): Added a bunch of null checks. Don't call
- JInternalFrame.setSelected() to avoid recursion.
+ * native/jni/java-lang/java_lang_VMFloat.c (Java_java_lang_VMFloat_floatToIntBits): Removed unused function.
-2007-01-29 Andrew Haley <aph@redhat.com>
+ * include/java_lang_VMDouble.h: Regenerated.
+
+ * doc/cp-vmintegration.texinfo (java.lang.VMFloat): Removed
+ unused method floatToIntBits. (java.lang.VMDouble): Use similar
+ text to text used for floatToRawIntBits for doubleToLongBits.
- * java/lang/SecurityManager.java (SecurityManager): Load and
- initialize java.security.Security.
-
-2007-01-28 Ito Kazumitsu <kaz@maczuka.gcd.org>
-
- * native/jni/java-nio/gnu_java_nio_VMChannel.c
- (Java_gnu_java_nio_VMChannel_accept): Throw SocketTimeoutException
- in case of timeout.
- * native/jni/java-nio/javanio.c(cpnio_accept): Call select() if
- SO_RCVTIMEO is set.
+2008-02-08 Dalibor Topic <robilad@kaffe.org>
-2007-01-26 Tom Tromey <tromey@redhat.com>
-
- * tools/gnu/classpath/tools/javah/FieldHelper.java (print): Print
- 'volatile' after field type.
+ * java/lang/Float.java (floatToIntBits): Simplified.
-2007-01-26 Chris Burdess <dog@gnu.org>
+2008-02-08 Dalibor Topic <robilad@kaffe.org>
- Fixes #30597
- * gnu/xml/dom/DomDocumentBuilder.java: Throw IOException where cause
- of LSException is an IOException.
- * gnu/xml/dom/ls/DomLSParser.java,
- gnu/xml/stream/SAXParser.java: Ensure coalescing feature is set
- correctly during LS parsing.
-
-2007-01-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/PersistentMBean.java:
- New file.
-
-2007-01-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAH) [USER_JAVAH]: Check for gjavah-4.2
+ and gjavah-4.1.
- * javax/management/AttributeChangeNotificationFilter.java:
- Correct typo.
- * javax/management/NotificationFilterSupport.java:
- New file.
-
-2007-01-21 Mark Wielaard <mark@klomp.org>
+2008-02-08 Dalibor Topic <robilad@kaffe.org>
- * java/security/SecureClassLoader.java (defineClass): Method returns
- Class<?>.
- * java/security/SignatureSpi.java (engineUpdate(ByteBuffer):
- Does not throw SignatureException. Chain SignatureException inside
- IllegalStateException.
+ * vm/reference/java/lang/VMDouble.java (doubleToLongBits): Removed unused method.
-2007-01-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * native/jni/java-lang/java_lang_VMDouble.c (Java_java_lang_VMDouble_doubleToLongBits):
+ Removed unused function.
- * javax/management/NotificationBroadcasterSupport.java:
- New file.
+ * include/java_lang_VMDouble.h: Regenerated.
-2007-01-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
+ * doc/cp-vmintegration.texinfo (java.lang.VMDouble): Removed
+ unused method doubleToLongBits.
- * java/text/DecimalFormat.java(parse): Corrected the ParsePosition
- settings.
+2008-02-08 Dalibor Topic <robilad@kaffe.org>
-2007-01-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
+ * java/lang/Double.java (doubleToLongBits): Simplified.
- * java/text/SimpleDateFormat(parse): Corrected the usage of
- NumberFormat.
+2008-02-07 Ian Rogers <ian.rogers@manchester.ac.uk>
-2007-01-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
+ * java/lang/String.java
+ (replace): Only copy "live" portion of String. Use array copies in preference
+ to clone.
+ (toLowerCaseTurkish): likewise
+ (toLowerCase): likewise
+ (toUpperCaseTurkish): likewise
+ (toUpperCase): likewise
+ (toCharArray): Use array copies in preference to clone.
- Fixes bug #30488
- * native/jni/native-lib/cpnet.c(SOCKET_NOSIGNAL): Deleted,
- (setsockopt_NOSIGPIPE): New function,
- (cpnet_send): Corrected the option setting to send(),
- (cpnet_sendTo): Corrected the option setting to sendto().
+2008-02-05 Ian Rogers <ian.rogers@manchester.ac.uk>
-2007-01-19 Marco Trudel <mtrudel@gmx.ch>
+ * gnu/java/lang/reflect/TypeSignature.java
+ * java/io/BufferedReader.java
+ * java/io/DataInputStream.java
+ * java/lang/StackTraceElement.java
+ * java/lang/Throwable.java
+ * java/lang/reflect/Proxy.java
+ * java/net/URI.java
+ * java/net/URLClassLoader.java
+ * java/net/URLEncoder.java
+ * java/text/SimpleDateFormat.java
+ * java/util/AbstractMap.java
+ * java/util/Calendar.java
+ * java/util/Date.java
+ * java/util/Hashtable.java
+ Use StringBuilder in preference to StringBuffer
+ * java/util/Calendar.java
+ * java/util/Hashtable.java
+ Make private fields that can be final, final
+ * java/net/URI.java
+ Avoid creating Integer objects for the sake of comparison
+ * java/lang/reflect/Proxy.java
+ * java/text/SimpleDateFormat.java
+ Swap use of "new Character/Integer" to use of valueOf methods
+
+2008-01-29 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ Fixes bug #22941
+ * java/io/DataInputStream.java(readUTFLong): New method.
+ (readUTF): New private method.
+ * java/io/DataOutputStream.java(getUTFlength): Made package-private,
+ Return type changed to long.
+ (writeUTF): Use the new method writeUTFShort.
+ (writeUTFShort): New package-private method.
+ (writeUTFLong): New package-private method.
+ (writeUTFBytes): New private method.
+ * java/io/ObjectInputStream.java(parseContent): Separate the
+ handling of TC_LONGSTRING from TC_STRING.
+ * java/io/ObjectOutputStream.java(writeObject): When to write a
+ String, use writeUTFShort or writeUTFLong depending on the byte length.
- * java/util/Arrays.java (binarySearch): Change comparison order.
+2008-01-27 Bernhard Fischer <rep.dot.nop@gmail.com>
-2007-01-17 Keith Seitz <keiths@redhat.com>
+ * java/util/SimpleTimeZone.java (SimpleTimeZone): Fix typo in comment.
+ * gnu/CORBA/GIOP/v1_2/RequestHeader.java (RequestHeader): Fix typo in
+ exception message.
- * gnu/classpath/jdwp/events/filters/StepFilter.java:
- Update javadoc.
- (matches): Implement.
+2008-01-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
- * gnu/classpath/jdwp/event/EventManager.java (EventManager): Honor
- agent startup suspension for VM_INIT.
+ * doc/README.jaxp: Fix typos.
-2007-01-17 Tom Tromey <tromey@redhat.com>
+2008-01-25 Dalibor Topic <robilad@kaffe.org>
- * tools/gnu/classpath/tools/javah/PathOptionGroup.java
- (PathOptionGroup): Set default boot class path.
+ * tools/gnu/classpath/tools/native2ascii/Native2ASCII.java
+ (createParser): Removed unused "reversed" misspelling. Use
+ Native2ASCII.ReverseHelp instead of Native2ASCII.ReversedHelp.
-2007-01-17 Mark Wielaard <mark@klomp.org>
+ * resource/gnu/classpath/tools/native2ascii/messages.properties
+ (Native2ASCII.ReverseHelp): New, renamed from ...
+ (Native2ASCII.ReversedHelp): Removed.
+ (Native2ASCII.ReversedHelpCompat): Removed.
- * javax/activity/ActivityCompletedException.java: Make constructors
- public.
- * javax/activity/ActivityRequiredException.java: Likewise.
- * javax/activity/InvalidActivityException.java: Likewise.
+2008-01-24 Tom Tromey <tromey@redhat.com>
-2007-01-17 Roman Kennke <kennke@aicas.com>
+ * resource/gnu/classpath/tools/native2ascii/messages.properties
+ (Native2ASCII.ReversedHelpCompat): New.
+ * tools/gnu/classpath/tools/native2ascii/Native2ASCII.java
+ (createParser): Add -reverse. Update -reversed.
- * javax/swing/plaf/basic/BasicRadioButtonUI.java
- (paint): Use helper method to figure out icon. Don't override
- the icon field in that class. Check for null icons.
- (getCurrentIcon): New helper function to determine icon to be
- painted.
+2008-01-21 Luciano Chavez <lnx1138@us.ibm.com>
-2007-01-17 Mark Wielaard <mark@klomp.org>
+ PR libgcj/34369:
+ * java/net/URI.java (relativize): Check initial segment for
+ trailing "/".
- * javax/activity/ActivityCompletedException.java: New file.
- * javax/activity/ActivityRequiredException.java: Likewise.
- * javax/activity/InvalidActivityException.java: Likewise.
- * javax/activity/package.html: Likewise.
+2008-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
-2007-01-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * m4/acinclude.m4:
+ Remove bootclasspath option which fails with
+ OpenJDK javac.
+
+2008-01-14 Roman Kennke <kennke@aicas.com>
- * javax/management/DefaultLoaderRepository.java:
- (loadClass(String)): Made static.
- (loadClassWithout(String,ClassLoader)): Likewise.
+ * javax/tools/FileObject.java: New interface.
-2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+2008-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * gnu/classpath/jdwp/exception/TypeMismatchException.java: New file.
- * gnu/classpath/jdwp/exception/InvalidFrameException.java: Fix indentation.
- * gnu/classpath/jdwp/exception/InvalidSlotException.java: Fix indentation.
+ * javax/accessibility/AccessibleAction.java:
+ (CLICK): Added.
+ (TOGGLE_POPUP): Likewise.
+ * javax/accessbiility/AccessibleRole.java:
+ (HTML_CONTAINER): Added.
-2007-01-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * javax/management/AttributeValueExp.java:
- Corrected serialVersionUID typo.
- * javax/management/DefaultLoaderRepository.java:
- New file.
- * javax/management/MBeanServerFactory.java:
- Add generic typing.
+ * javax/accessibility/AccessibleAttributeSequence.java:
+ (AccessibleAttributeSequence(int,int,AttributeSet)):
+ Implemented.
+ * javax/accessibility/AccessibleTextSequence.java:
+ (AccessibleTextSequence(int,int,String)):
+ Likewise.
-2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+2008-01-13 Leen Toelen <toelen@gmail.com>
- * gnu/classpath/jdwp/exception/InvalidFrameException.java: New file.
+ * native/fdlibm/ieeefp.h: Added avr32 support.
-2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+2008-01-09 Stefan Huehner <stefan@huehner.org>
+
+ * native/jni/java-io/java_io_VMObjectStreamClass.c,
+ * native/jni/java-lang/java_lang_VMDouble.c,
+ * native/jni/java-net/java_net_VMInetAddress.c:
+ Don't discard const by casting (const char *) to
+ (char *) when it's not needed.
- * gnu/classpath/jdwp/exception/AbsentInformationException.java: New file.
+2008-01-09 Stefan Huehner <stefan@huehner.org>
-2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+ * gnu/classpath/jdwp/event/ExceptionEvent.java,
+ * gnu/java/awt/peer/gtk/GtkMainThread.java:
+ Use Boolean.TRUE|FALSE instead of new Boolean(true|false)
+ * gnu/java/rmi/server/ConnectionRunnerPool.java,
+ * gnu/xml/aelfred2/XmlParser.java,
+ * gnu/xml/libxmlj/dom/GnomeXPathResult.java,
+ * gnu/xml/stream/XIncludeFilter.java:
+ Use Integer|Double|Charater.toString(var) instead of
+ new Integer|Double|Character(var).toString()
- * gnu/classpath/jdwp/exception/InvalidSlotException.java: New file.
+2006-01-09 Roman Kennke <kennke@aicas.com>
-2007-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * javax/tools/Diagnostic.java,
+ * javax/tools/DiagnosticListener.java:
+ New interfaces.
- * javax/management/AttributeValueExp.java: New file.
- * javax/management/QueryEval.java: Likewise.
- * javax/management/StringValueExp.java: Likewise.
-
-2007-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2006-01-09 Roman Kennke <kennke@aicas.com>
- * javax/management/AttributeChangeNotificationFilter.java:
- New file.
-
-2007-01-11 Andreas Tobler <a.tobler@schweiz.org>
-
- * examples/gnu/classpath/examples/awt/AicasGraphicsBenchmark.java
- (AicasGraphicsBenchmark): Load images from ../icons.
- * examples/gnu/classpath/examples/java2d/J2dBenchmark.java (init):
- Likewise.
- * examples/Makefile.am (EXAMPLE_ICONS): Add rule to copy *.gif files
- to icons.
- * examples/gnu/classpath/examples/awt/aicas.png: Move to ../icons.
- Delete here.
- * examples/gnu/classpath/examples/awt/palme.gif: Likewise.
- * examples/gnu/classpath/examples/java2d/aicas.png: Likewise.
- * examples/gnu/classpath/examples/java2d/palme.gif: Likewise.
- * examples/gnu/classpath/examples/icons/aicas.png: Moved.
- * examples/gnu/classpath/examples/icons/palme.gif: Likewise.
-
-2007-01-09 Tania Bento <tbento@redhat.com>
-
- * java/security/Permission.java:
- (toString): If there are no actions, then there should not
- be a space between its name and ')'.
-
-2007-01-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * javax/management/AttributeChangeNotification.java:
- New file.
-
-2007-01-08 Cameron McCormack <cam@mcc.id.au>
-
- PR 30355
- * java/util/Arrays.java:
- (binarySearch(byte[],byte)): Added check for zero-length array.
- (binarySearch(short[],short)): Likewise.
- (binarySearch(int[],int)): Likewise.
- (binarySearch(long[],long)): Likewise.
- (binarySearch(char[],char)): Likewise.
- (binarySearch(float[],float)): Likewise.
- (binarySearch(double[],double)): Likewise.
- (binarySearch(Object[],Object)): Likewise.
- (binarySearch(T[],T,Comparator)): Likewise.
-
-2007-01-08 Tom Tromey <tromey@redhat.com>
-
- * tools/gnu/classpath/tools/native2ascii/Native2ASCII.java (run):
- Fix length check. PR classpath/30346.
-
-2007-01-09 Raif S. Naffah <classpath@naffah-raif.name>
-
- * tools/gnu/classpath/tools/jarsigner/SFHelper.java: Updated copyright year.
- (sfEntries): Use generics.
- (writeDSA()): Likewise.
- (startSigning()): Likewise.
- (updateEntry()): Likewise.
- * tools/gnu/classpath/tools/jarsigner/Messages.java: Updated copyright year.
- (CACHED_FORMATS): Use generics.
- (getFormattedString()): Likewise.
- * tools/gnu/classpath/tools/jarsigner/Main.java: Updated copyright year.
- (fileAndAlias): Use generics.
- (ToolParser.validate()): Likewise.
- * tools/gnu/classpath/tools/jarsigner/JarVerifier.java:
- Updated copyright year.
- Re-ordered imports and removed unused entries.
- (entryHashes): Use generics.
- (start()): Likewise.
- (verifySFEntries()): Likewise.
- Use map's entrySet() instead of its keySet().
-
-2007-01-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * java/text/DateFormat.java:
- (computeInstance(int,int,Locale,boolean,boolean)):
- Throw an exception when locale info. is unavailable.
- (computeDefault(int,int,boolean,boolean)): New method.
- (getDateInstance(int,Locale)): Check providers.
- (getDateTimeInstance(int,int,Locale)): Likewise.
- (getTimeInstance(int,Locale)): Likewise.
- * java/text/DateFormatSymbols.java:
- Update documentation to match DecimalFormatSymbols.
- * java/text/DecimalFormatSymbols.java:
- (DecimalFormatSymbols(Locale)): Reordered.
- (getInstance()): Implemented.
- (getInstance(Locale)): Implemented.
- * java/text/NumberFormat.java:
- (computeInstance(Locale,String,String)):
- Throw an exception when locale info is unavailable.
- (getCurrencyInstance(Locale)): Check providers.
- (getIntegerInstance(Locale)): Likewise.
- (getNumberInstance(Locale)): Likewise.
- (getPercentInstance(Locale)): Likewise.
- * java/text/spi/DateFormatProvider.java: New file.
- * java/text/spi/DecimalFormatSymbolsProvider.java: Likewise.
- * java/text/spi/NumberFormatProvider.java: Likewise.
-
-2007-01-07 Ito Kazumitsu <kaz@maczuka.gcd.org>
-
- Fixes bug #30377
- * native/jni/native-lib/cpnet.h: Add some include files.
-
-2007-01-07 Roman Kennke <roman@kennke.org>
-
- PR 30337
- * java/awt/Component.java
- (getFontImpl): Return null when the component has no font set
- and also has no parent yet.
- * javax/swing/plaf/basic/BasicComboBoxUI.java
- (PropertyChangeHandler.propertyChange): Only add editor when combo
- box is editable. Avoid fetching the property name repeatedly.
- Invalidate when renderer or prototypeDisplayValue change.
- (uninstallComponents): Unconfigure everything and then remove all
- components.
- * javax/swing/plaf/basic/BasicComboPopup.java
- (uninstallingUI): Don't nullify list model.
- * javax/swing/plaf/metal/MetalComboBoxUI.java
- (createArrowButton): Pass currentValuePane to the MetalComboBoxButton
- constructor rather than a new (unconnected) CellRendererPane.
-
-2007-01-06 Roman Kennke <roman@kennke.org>
-
- PR 30337
- * javax/swing/plaf/basic/BasicComboBoxUI.java
- (installUI): Install popup and list here.
- Don't configure the arrow button and editor here.
- (installComponents): Don't install popup and list here. (Moved
- to installUI). Configure arrow button here and check for null.
- (addEditor): Configure editor here.
- (configureArrowButton): Directly fetch listeners from popup.
- (paintCurrentValue): Removed unused local variables.
- (layoutContainer): Removed unused local variables.
- (PropertyChangeHandler.propertyChange): Don't invalidate minimumSize
- on each property change. Avoid calling getPropertyName() repeatedly.
- Clean up. Call addEditor() when editor changes. Configure and
- unconfigure editor when editable changes. Use 'model' instead
- of non-existing 'dataModel' property.
- * javax/swing/plaf/basic/BasicComboPopup.java
- (uninstallingUI): Remove property change listener and item listener
- here. Uninstall list listeners. Set model to null to prevent leakage.
- (configureList): Don't sync list selection there.
- (uninstallComboBoxListeners): Moved to uninstallingUI.
- (uninstallListeners): Moved to uninstallingUI.
- * javax/swing/plaf/metal/MetalComboBoxUI.java
- (createPopup): Call super.
- (getMinimumSize): Removed unused statement.
-
-2007-01-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * java/text/Collator.java:
- (getInstance(Locale)): Check providers.
- * java/text/spi/CollatorProvider.java:
- New file.
-
-2007-01-04 Roman Kennke <roman@kennke.org>
-
- PR 30122
- * java/awt/Component.java
- (getFont): Don't synchronize on tree lock here. The method is
- thread-safe 'enough' by fetching local variables in getFontImpl().
-
-2007-01-04 Roman Kennke <roman@kennke.org>
-
- * java/awt/AWTEvent.java
- (toString): Don't include the whole component in the output,
- only its name.
- * java/awt/Component.java
- (isShowing): Create local copy of parent field for better
- thread safety and efficiency.
- * java/awt/EventDispatchThread.java
- (EventDispatchThread): Make sure the event thread is not a daemon
- thread in case it gets started by a daemon thread.
- * java/awt/image/IndexColorModel.java
- (createColorMap): New helper method for creating the color map.
- (IndexColorModel): (all constructors) use createColorMap() helper
- method.
-
-2007-01-04 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/font/autofit/GlyphHints.java
- (alignStrongPoints): Don't special case the vertical dimension.
- (computeInflectionPoints): Corrected computation of inflection
- points.
- * gnu/java/awt/font/autofit/Utils.java
- (ANGLE_4PI): Removed.
- (ANGLE_PI2): New constant for PI/2.
- (ANGLE_PI4): New constant for PI/4.
- (angleDiff): Fixed.
- (atan): Fixed.
-
-2007-01-03 Cameron McCormack <cam@mcc.id.au>
-
- Fixes bug #29246
- * java/awt/Toolkit.java (getLockingKeyState): Use AWTUtilities
- isValidKey method. Throw UnsupportedOperationException on a valid
- key (for which no locking state can be given).
- * gnu/java/awt/AWTUtilities.java (isValidKey): New method.
- * gnu/java/awt/peer/gtk/GtkToolkit.java (getLockingKeyState): New
- method.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
- (Java_gnu_java_awt_peer_gtk_GtkToolkit_getLockState): New method.
- * include/gnu_java_awt_peer_gtk_GtkToolkit.h: Regenerated.
-
-2007-01-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * java/text/BreakIterator.java:
- (getCharacterInstance(Locale)): Check providers.
- (getLineInstance(Locale)): Likewise.
- (getSentenceInstance(Locale)): Likewise.
- (getWordInstance(Locale)): Likewise.
- * java/text/spi/BreakIteratorProvider.java:
- New file.
- * java/text/spi/DateFormatSymbolsProvider.java:
- Update header text.
- * java/util/ServiceConfigurationError.java:
- Add serialVersionUID.
-
-2007-01-03 Francis Kung <fkung@redhat.com>
+ * gnu/java/awt/peer/x/XWindowPeer.java
+ (getFontMetrics): Re-enable that for X fonts.
- * gnu/java/awt/peer/gtk/CairoGraphics2D.java:
- (copy): Copy and set antialias value.
+2008-01-09 Stefan Huehner <stefan@huehner.org>
-2007-01-03 Tania Bento <tbento@redhat.com>
- * java/awt/CardLayout.java:
- (maximumLayoutSize): Return a new Dimension with a width of value
- Integer.MAX_VALUE and a height of value Integer.MAX_VALUE if Component
- has no components.
+ * examples/gnu/classpath/examples/java2d/J2dBenchmark.java,
+ * gnu/CORBA/OrbFocused.java,
+ * gnu/CORBA/CDR/HeadlessInput.java,
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java,
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java,
+ * gnu/java/awt/peer/qt/QtMenuPeer.java,
+ * gnu/java/nio/FileChannelImpl.java,
+ * gnu/java/nio/SocketChannelSelectionKeyImpl.java,
+ * gnu/java/security/Engine.java,
+ * gnu/javax/imageio/jpeg/JPEGComponent.java,
+ * gnu/javax/imageio/jpeg/JPEGDecoder.java,
+ * gnu/javax/imageio/jpeg/JPEGFrame.java,
+ * gnu/javax/print/PrinterDialog.java,
+ * gnu/javax/security/auth/Password.java,
+ * gnu/javax/swing/text/html/parser/support/Parser.java,
+ * gnu/javax/swing/text/html/parser/support/parameterDefaulter.java,
+ * gnu/xml/pipeline/DomConsumer.java,
+ * java/awt/AWTKeyStroke.java,
+ * java/awt/DefaultKeyboardFocusManager.java,
+ * java/awt/GridBagLayout.java,
+ * java/awt/dnd/DragGestureRecognizer.java,
+ * java/awt/geom/Arc2D.java,
+ * java/awt/geom/CubicCurve2D.java,
+ * java/awt/geom/QuadCurve2D.java,
+ * java/awt/im/InputContext.java,
+ * java/awt/image/AffineTransformOp.java,
+ * java/beans/Encoder.java,
+ * java/io/ObjectInputStream.java,
+ * java/io/ObjectStreamClass.java,
+ * java/net/ResolverCache.java,
+ * java/nio/charset/Charset.java,
+ * java/security/SecureClassLoader.java,
+ * java/text/MessageFormat.java,
+ * java/util/jar/Manifest.java,
+ * javax/accessibility/AccessibleRelationSet.java,
+ * javax/imageio/ImageReader.java,
+ * javax/imageio/metadata/IIOMetadataNode.java,
+ * javax/print/attribute/standard/MediaSize.java,
+ * javax/print/attribute/standard/PrinterStateReasons.java,
+ * javax/swing/JTree.java,
+ * javax/swing/table/DefaultTableColumnModel.java,
+ * javax/swing/text/html/MinimalHTMLWriter.java,
+ * javax/swing/text/html/parser/DTD.java,
+ * javax/swing/tree/DefaultMutableTreeNode.java,
+ * javax/swing/undo/UndoManager.java,
+ * org/omg/CosNaming/NamingContextExtPOA.java,
+ * org/omg/CosNaming/NamingContextPOA.java,
+ * org/omg/CosNaming/_NamingContextExtImplBase.java,
+ * org/omg/CosNaming/_NamingContextImplBase.java,
+ * tools/gnu/classpath/tools/appletviewer/CommonAppletStub.java:
+ Remove unneeded casts
+
+2006-01-09 Roman Kennke <kennke@aicas.com>
+
+ * java/text/CollationElementIterator.java
+ (text): Changed type to CharacterIterator.
+ (CollationElementIterator(RuleBasedCollator,CharacterIterator)): New
+ constructor.
+ (setOffset(int)): Use CharacterIterator.getEndIndex() instead of
+ String.length().
+ (setText(String)): Wrap string into a StringCharacterIterator.
+ * java/text/RuleBasedCollator.java
+ (getCollationElementIterator(CharacterIterator)): Simply return
+ CollationElementIterator for the character iterator, instead of
+ expanding things.
+
+2008-01-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34579:
+ * m4/acinclude.m4:
+ (CLASSPATH_CHECK_JAVAC): Delete Colour.java
+
+2008-01-04 Stefan Huehner <stefan@huehner.org>
+
+ * gnu/CORBA/BigDecimalHelper.java,
+ * gnu/CORBA/CDR/AbstractCdrInput.java,
+ * gnu/CORBA/CDR/AbstractCdrOutput.java,
+ * gnu/CORBA/CDR/HeadlessInput.java,
+ * gnu/CORBA/CDR/gnuRuntime.java,
+ * gnu/CORBA/Connected_objects.java,
+ * gnu/CORBA/GIOP/CancelHeader.java,
+ * gnu/CORBA/GIOP/v1_0/CancelHeader.java,
+ * gnu/CORBA/IOR.java,
+ * gnu/CORBA/Interceptor/Registrator.java,
+ * gnu/CORBA/IorDelegate.java,
+ * gnu/CORBA/NamingService/NameTransformer.java,
+ * gnu/CORBA/ObjectCreator.java,
+ * gnu/CORBA/OrbFunctional.java,
+ * gnu/CORBA/Poa/AOM.java,
+ * gnu/CORBA/Poa/gnuPOA.java,
+ * gnu/CORBA/Poa/gnuPOAManager.java,
+ * gnu/CORBA/Poa/gnuServantObject.java,
+ * gnu/CORBA/typecodes/FixedTypeCode.java,
+ * gnu/CORBA/typecodes/RecursiveTypeCode.java,
+ * gnu/java/awt/AWTUtilities.java,
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java,
+ * gnu/java/awt/peer/gtk/CairoSurface.java,
+ * gnu/java/awt/peer/swing/SwingMenuBarPeer.java,
+ * gnu/java/text/AttributedFormatBuffer.java,
+ * gnu/java/util/regex/REToken.java,
+ * gnu/javax/imageio/gif/GIFFile.java,
+ * gnu/javax/imageio/png/PNGDecoder.java,
+ * gnu/javax/management/Server.java,
+ * gnu/javax/naming/giop/ContextContinuation.java,
+ * gnu/javax/naming/jndi/url/rmi/ContextContinuation.java,
+ * gnu/javax/swing/text/html/css/Selector.java,
+ * gnu/javax/swing/text/html/parser/models/node.java,
+ * gnu/javax/swing/text/html/parser/support/Parser.java,
+ * gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java,
+ * gnu/javax/swing/text/html/parser/support/textPreProcessor.java,
+ * gnu/xml/util/Resolver.java,
+ * java/awt/image/AreaAveragingScaleFilter.java,
+ * java/beans/Beans.java,
+ * java/beans/XMLDecoder.java,
+ * java/beans/beancontext/BeanContextServicesSupport.java,
+ * java/beans/beancontext/BeanContextSupport.java,
+ * java/io/CharArrayWriter.java,
+ * java/lang/System.java,
+ * java/net/ResolverCache.java,
+ * java/util/Calendar.java,
+ * java/util/Collections.java,
+ * java/util/Formatter.java,
+ * javax/accessibility/AccessibleEditableText.java,
+ * javax/imageio/ImageReader.java,
+ * javax/imageio/ImageTypeSpecifier.java,
+ * javax/imageio/ImageWriter.java,
+ * javax/imageio/spi/ServiceRegistry.java,
+ * javax/imageio/stream/ImageInputStream.java,
+ * javax/management/MBeanPermission.java,
+ * javax/rmi/CORBA/PortableRemoteObjectDelegate.java,
+ * javax/rmi/CORBA/Util.java,
+ * javax/rmi/CORBA/UtilDelegate.java,
+ * javax/rmi/CORBA/ValueHandler.java,
+ * javax/rmi/PortableRemoteObject.java,
+ * org/ietf/jgss/GSSContext.java,
+ * tools/gnu/classpath/tools/appletviewer/PluginAppletWindow.java,
+ * tools/gnu/classpath/tools/appletviewer/StandaloneAppletWindow.java,
+ * tools/gnu/classpath/tools/appletviewer/TagParser.java,
+ * vm/reference/gnu/java/nio/VMChannel.java:
+ Correct javadoc to match the functions' parameters
+ * gnu/java/awt/peer/swing/SwingTextFieldPeer.java:
+ Rename start_pos parameter to startPos to conform to style.
+
+2008-01-07 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/awt/image/Raster.java
+ (createInterleavedRaster): Fixed ComponentSampleModel constructor
+ argument order.
-2007-01-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-01-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * java/text/DateFormatSymbols.java:
- (getZoneStrings(ResourceBundle)): Changed to...
- (getZoneStrings(ResourceBundle,Locale)): Added
- use of TimeZoneNamesProvider.
- (getZoneStrings()): Return either mutated zone
- strings or initial ones.
- (getInstance(Locale)): Check DateFormatSymbolsProvider
- instances.
- * java/text/spi/DateFormatSymbolsProvider.java:
- New file.
- * java/text/spi/package.html: New file.
+ PR classpath/34579:
+ * m4/acinclude.m4:
+ (CLASSPATH_CHECK_JAVAC): Don't rely on 1.5 class
+ library.
-2007-01-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * java/util/Currency.java:
- (getSymbol(Locale)): Removed unneeded variable
- and terminate loop early.
- * java/util/Locale.java:
- (getDisplayLanguage(Locale)): Fixed to use
- LocaleNameProvider.
- (getDisplayCountry(Locale)): Likewise.
- (getDisplayVariant(Locale)): Likewise.
- * java/util/spi/LocaleNameProvider.java:
- New file.
- * java/util/spi/TimeZoneNameProvider.java:
- Likewise.
-
-2007-01-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
+2008-01-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
- * gnu/java/locale/LocaleHelper.java:
- (getLocalizedString(Locale,String,String,boolean,
- boolean)): Removed, no longer needed.
- (getFallbackLocale(Locale)): Implemented.
- * java/lang/String.java:
- (isEmpty()): Implemented.
- * java/util/Currency.java:
- (getSymbol(Locale)): Reimplemented to use SPI.
- * java/util/Locale.java:
- (ROOT): Added.
- * java/util/spi/CurrencyNameProvider.java:
- New file.
- * java/util/spi/LocaleServiceProvider.java:
- Likewise.
- * java/util/spi/package.html: Likewise.
-
-2007-01-02 Roman Kennke <roman@kennke.org>
-
- * gnu/java/awt/java2d/AbstractGraphics2D.java
- (FONT): New constant field. This is the default font to use as long
- as nothing else is set.
- (paintContext): New field. Temporarily stores the paint context.
- (scanlineConverters): New field. Stores the scanline converters
- for each thread.
- (shapeCache): Genericified.
- (STANDARD_HINTS): New constant field. The standard rendering hints
- as long as nothing else is set.
- (STANDARD_STROKE): New constant field. The standard stroke as long
- as nothing else is set.
- (static_initializer): Initialize standard hints.
- (AbstractGraphics2D): Use constant fields for hints and stroke.
- (drawGlyphVector): Use simpler method to draw the outline.
- (fillScanline): Use paintContext field.
- (fillShape): Use new ScanlineConverter to fill shapes.
- (fillShapeAntialias): Removed. This will be done in fillShape.
- (fillShapeImpl): Removed. This is done now in the ScanlineConverter
- class.
- (getScanlineConverter): New method. Returns the scanline converter
- for each thread.
- (getSegments): Removed. This is now implemented in ScanlineConverter.
- (getShapeCache): Use genericified shapeCache field.
- (init): Use fixed default font. Don't fetch destination raster here.
- * gnu/java/awt/java2d/ActiveEdges.java: New class. Stores a set
- of active edges for scanline conversion.
- * gnu/java/awt/java2d/PolyEdge.java
- (poolNext): Implements linked list for edge pool.
- (scanlineNext): Implements linked list for scanline edge lists.
- (slope): Use fixed point decimal.
- (slope,x0,y0,x1,y1,xIntersection): Use fixed point decimal.
- (PolyEdge()): New constructor.
- (PolyEdge): Use fixed point decimals.
- (init): Use fixed point decimals.
- (intersect): New method. Intersects this edge with a scanline.
- * gnu/java/awt/java2d/Scanline.java: New class. A list of edges
- for a scanline plus utilities.
- * gnu/java/awt/java2d/ScanlineConverter.java: New class. Implements
- an efficient scanline converter for rendering Shape objects.
-
-2007-01-02 Roman Kennke <roman@kennke.org>
-
- * gnu/java/math/Fixed.java: New class. Fixed point arithmetics
- utilities.
-
-2007-01-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
-
- * ChangeLog-2006: New file.
- * gnu/classpath/ServiceFactory.java:
- Add option of throwing a ServiceConfigurationError.
- (lookupProviders(Class,ClassLoader,boolean)): Implemented.
- * java/util/ServiceConfigurationError.java: New file.
- * java/util/ServiceLoader.java: Likewise.
-
+ * ChangeLog-2007: New file.
\f
Local Variables:
--- /dev/null
+2007-12-31 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/remote/rmi/RMIConnection.java:
+ Partial implementation.
+ * javax/management/remote/rmi/RMIServer.java:
+ Implemented.
+
+2007-12-31 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34582:
+ * javax/rmi/ssl/SslRMIClientSocketFactory.java:
+ (getProp(String)): Check for the property being null.
+
+2007-12-28 Dalibor Topic <robilad@kaffe.org>
+
+ * configure.ac (AC_CHECK_HEADERS): Check for
+ netinet/in_systm.h, netinet/ip.h and net/if.h
+ for Windows CE.
+
+ * native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c:
+ Guard net/if.h include statement. Use unsigned int
+ instead of u_int.
+
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c:
+ Guard sys/mman.h include statement.
+
+ * native/jni/java-nio/gnu_java_nio_VMSelector.c:
+ Guard sys/select.h include statement.
+
+ * native/jni/java-nio/javanio.c:
+ Guard sys/select.h include statement.
+
+ * native/jni/java-nio/javanio.h:
+ Include sys/time.h.
+
+ * native/jni/native-lib/cpio.c:
+ Guard chmod call by S_IWRITE, since it's not
+ defined in the arm-wince toolchain.
+
+ * native/jni/native-lib/cpnet.h:
+ Guard netinet/in_systm.h and netinet/ip.h
+ include statements.
+
+2007-12-28 Dalibor Topic <robilad@kaffe.org>
+
+ * m4/acinclude.m4 (CLASSPATH_WITH_GLIBJ): Use
+ AC_PATH_PROGS instead of AC_PATH_PROG to check
+ for FASTJAR as fastjar, gjar or jar. Add braces
+ to AC_PATH_PROGS arguments.
+
+ * tools/Makefile.am (TOOLS_ZIP),
+ lib/Makefile.am (collections.jar, glibj.zip):
+ Quote FASTJAR in case it's in a path with
+ whitespace.
+
+2007-12-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34580:
+ * java/awt/Desktop.java:
+ (isDesktopSupported()): Made public.
+
+2007-12-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34577:
+ * javax/swing/JFrame.java:
+ (addImpl(Component,Object,int)): Add a similar
+ check for the root pane as in remove, adding using
+ the superclass when this occurs rather than the
+ content pane.
+
+2007-12-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34576:
+ * java/awt/Container.java:
+ (isAncestorOf(Component)): Swap ordering so that
+ the parent is retrieved prior to checking against
+ this, thus preventing a component being an ancestor of
+ itself.
+
+2007-12-11 Robert Schuster <robertschuster@fsfe.org>
+
+ * AUTHORS: Added my name to the list.
+
+2007-12-10 Robert Schuster <robertschuster@fsfe.org>
+
+ * THANKYOU: Added my name to the list.
+
+2007-12-10 Robert Schuster <robertschuster@fsfe.org>
+
+ PR classpath/32516:
+ * tools/gnu/classpath/tools/jar/Entry.java:
+ (Entry(File, String)): Added loop to remove all dot-file separator
+ prefixes.
+ (Entry(File)): Call Entry(File, String) constructor variant.
+
+2007-12-10 Robert Schuster <robertschuster@fsfe.org>
+
+ * native/jni/native-lib/cpio.c:
+ (cpio_df): Mark arguments as possibly unused.
+
+2007-12-10 Robert Schuster <robertschuster@fsfe.org>
+
+ * javax/swing/text/GlyphView.java:
+ (paint): Removed debug output.
+
+2007-12-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34276:
+ * gnu/javax/management/Translator.java:
+ (translate(String)): Select only public methods
+ from a composite type, try this translation in all
+ cases and exit only when no fields are translated.
+
+2007-11-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/34276:
+ * gnu/java/lang/management/BeanImpl.java:
+ (getDescription(MBeanConstructorInfo,MBeanParameterInfo,int)):
+ Added to provide a default description if the current one is null.
+ (getDescription(MBeanOperationInfo,MBeanParameterInfo,int)):
+ Likewise.
+ (getParameterName(MBeanConstructorInfo,MBeanParameterInfo,int)):
+ Likewise for the name.
+ (getParameterName(MBeanOperationInfo,MBeanParameterInfo,int)):
+ Likewise.
+ * gnu/javax/management/Server.java:
+ (getMBeanInfo()): Try using a StandardMBean wrapper if reflection
+ fails to find getMBeanInfo().
+
+2007-11-28 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * examples/gnu/classpath/examples/management/TestBeans.java:
+ Simplify so that it uses the management server.
+ * examples/gnu/classpath/examples/management/TestClassLoading.java:
+ Test via the server and the proxy as well.
+
+2007-11-27 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
+ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c
+ (isWindowUnderMouse): New method.
+ * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h:
+ Regenerate.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ (getLocationOnScreen): Move WindowPeer section to...
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java (getLocationOnScreen):
+ New method.
+ * gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java
+ (isWindowUnderMouse): Implement.
+ * java/awt/Component.java (getMousePosition): New method.
+ (getMousePositionHelper): Likewise.
+ (mouseOverComponent): Likewise.
+ * java/awt/Container.java (getMousePosition): New method.
+ (mouseOverComponent): Likewise.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:
+ Revert 2007-09-11 changes.
+
+2007-11-27 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/package.html: Added.
+ * javax/management/remote/package.html: Likewise.
+
+2007-11-24 Mario Torre <neugens@limasoftware.net>
+
+ * java/util/concurrent/CopyOnWriteArrayList.java:
+ (addAll): fix implementation, now add elements in the correct position.
+ (addAllAbsent): fixed typos (whoops!).
+ (remove(int)): fixed range in arraycopy that was causing for incorrect
+ values to be inserted in the list. Refactored to give variables better
+ names.
+ (remove(Object)): refactored to give better names to variable.
+ (listIterator): fix to set the starting index.
+ (listIterator.previous): fix to decrement element position before
+ returning the previous element in the iterator.
+
+2007-11-23 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/java/util/prefs/EventDispatcher.java: class removed.
+ * gnu/classpath/toolkit/DefaultDaemonThreadFactory.java: new file.
+ * java/util/prefs/AbstractPreferences.java: (fire(PreferenceChangeEvent)):
+ Use DefaultDaemonThreadFactory and Executors.newSingleThreadExecutor
+ instead of EventDispatcher. Import statement refactored accordingly.
+ Also refactored to use 1.5 enhanced for loop and generics.
+ (fire(NodeChangeEvent, boolean)): likewise.
+ * gnu/java/util/prefs/GConfBasedPreferences.java (childSpi):
+ removed startWatchingNode call.
+ * gnu/java/util/prefs/gconf/GConfNativePeer.java:
+ (GConfNativePeer): removed use of semaphore.
+ (gconf_all_nodes): method name shortened, renamed from
+ gconf_client_all_nodes (removed client_ from method signature) and
+ declared synchronized.
+ (gconf_suggest_sync): likewise.
+ (gconf_get_string): likewise.
+ (gconf_unescape_key): likewise.
+ (gconf_set_string): likewise.
+ (gconf_escape_key): likewise.
+ (gconf_all_keys): likewise.
+ (gconf_dir_exists): likewise.
+ (getKeys): refactored to use new native method name.
+ (getKey): likewise.
+ (setString): likewise.
+ (getChildrenNodes): likewise.
+ (unset): likewise.
+ (suggestSync): likewise.
+ (finalize): likewise.
+ (nodeExist): likewise.
+ (gconf_client_add_dir): removed, not needed anymore.
+ (gconf_client_remove_dir): likewise.
+ (startWatchingNode): likewise.
+ (stopWatchingNode): likewise.
+ * native/jni/conf-peer/GConfNativePeer.c:
+ All native methods renamed to match changes in GConfNativePeer.java
+ Now use GConfEngine instead of GConfClient.
+ Removed gdk_thread_enter/leave locking from all methods.
+ (Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1add_1dir):
+ removed.
+ (Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1dir_1exists):
+ likewise.
+ * include/gnu_java_util_prefs_gconf_GConfNativePeer.h: regenerated.
+
+2007-11-23 Mario Torre <neugens@limasoftware.net>
+
+ * java/util/concurrent/CopyOnWriteArrayList.java:
+ Added javadoc.
+ (serialVersionUID): new field.
+ (iterator): new method, override from base class.
+ (remove): likewise.
+ (listIterator): likewise.
+ (removeAll): likewise.
+ (retainAll): likewise.
+ (contains): fixed typo in javadoc.
+ (addIfAbsent): added javadoc.
+ (addAllAbsent): Rewrite to improve performance. Also add javadoc.
+
+2007-11-23 Ian Rogers <ian.rogers@manchester.ac.uk>
+
+ * java/io/FileOutputStream.java,
+ * java/io/PrintStream.java,
+ * java/util/Locale.java:
+ Make fields that can be final, final.
+ * gnu/java/nio/charset/ByteCharset.java,
+ * gnu/java/nio/charset/Cp424.java,
+ * gnu/java/nio/charset/Cp437.java,
+ * gnu/java/nio/charset/Cp737.java,
+ * gnu/java/nio/charset/Cp775.java,
+ * gnu/java/nio/charset/Cp850.java,
+ * gnu/java/nio/charset/Cp852.java,
+ * gnu/java/nio/charset/Cp855.java,
+ * gnu/java/nio/charset/Cp857.java,
+ * gnu/java/nio/charset/Cp860.java,
+ * gnu/java/nio/charset/Cp861.java,
+ * gnu/java/nio/charset/Cp862.java,
+ * gnu/java/nio/charset/Cp863.java,
+ * gnu/java/nio/charset/Cp864.java,
+ * gnu/java/nio/charset/Cp865.java,
+ * gnu/java/nio/charset/Cp866.java,
+ * gnu/java/nio/charset/Cp869.java,
+ * gnu/java/nio/charset/Cp874.java,
+ * gnu/java/nio/charset/EncodingHelper.java,
+ * gnu/java/nio/charset/ISO_8859_13.java,
+ * gnu/java/nio/charset/ISO_8859_15.java,
+ * gnu/java/nio/charset/ISO_8859_1.java,
+ * gnu/java/nio/charset/ISO_8859_2.java,
+ * gnu/java/nio/charset/ISO_8859_3.java,
+ * gnu/java/nio/charset/ISO_8859_4.java,
+ * gnu/java/nio/charset/ISO_8859_5.java,
+ * gnu/java/nio/charset/ISO_8859_6.java,
+ * gnu/java/nio/charset/ISO_8859_7.java,
+ * gnu/java/nio/charset/ISO_8859_8.java,
+ * gnu/java/nio/charset/ISO_8859_9.java,
+ * gnu/java/nio/charset/KOI_8.java,
+ * gnu/java/nio/charset/MacCentralEurope.java,
+ * gnu/java/nio/charset/MacCroatian.java,
+ * gnu/java/nio/charset/MacCyrillic.java,
+ * gnu/java/nio/charset/MacDingbat.java,
+ * gnu/java/nio/charset/MacGreek.java,
+ * gnu/java/nio/charset/MacIceland.java,
+ * gnu/java/nio/charset/MacRomania.java,
+ * gnu/java/nio/charset/MacRoman.java,
+ * gnu/java/nio/charset/MacSymbol.java,
+ * gnu/java/nio/charset/MacThai.java,
+ * gnu/java/nio/charset/MacTurkish.java,
+ * gnu/java/nio/charset/MS874.java,
+ * gnu/java/nio/charset/Provider.java,
+ * gnu/java/nio/charset/US_ASCII.java,
+ * gnu/java/nio/charset/Windows1250.java,
+ * gnu/java/nio/charset/Windows1251.java,
+ * gnu/java/nio/charset/Windows1252.java,
+ * gnu/java/nio/charset/Windows1253.java,
+ * gnu/java/nio/charset/Windows1254.java,
+ * gnu/java/nio/charset/Windows1255.java,
+ * gnu/java/nio/charset/Windows1256.java,
+ * gnu/java/nio/charset/Windows1257.java,
+ * gnu/java/nio/charset/Windows1258.java,
+ * gnu/java/nio/charset/ByteDecodeLoopHelper.java,
+ * gnu/java/nio/charset/ByteEncodeLoopHelper.java:
+ Optimize for array based buffers.
+ * native/jni/gtk-peer/gtkpeer.c:
+ Make 32bit pointer a global JNI reference.
+ * java/lang/String:
+ (toLowerCaseTurkish): new method.
+ (toUpperCaseTurkish): new method.
+ (toLowerCase): special case Turkish
+ (toUpperCase): likewise.
+ * java/lang/Long:
+ (valueOf): remove unnecessary synchronized.
+
+2007-11-08 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/util/Locale.java
+ (Locale): Always intern strings.
+
+2007-11-06 Mario Torre <neugens@limasoftware.net>
+
+ * vm/reference/java/io/VMFile.java:
+ (getTotalSpace): new method.
+ (getUsableSpace): likewise.
+ (getFreeSpace): likewise.
+ * java/io/File.java: (getTotalSpace): new method.
+ (getUsableSpace): likewise.
+ (getFreeSpace): likewise.
+ * native/jni/java-io/java_io_VMFile.c:
+ (Java_java_io_VMFile_getTotalSpace): new function.
+ (Java_java_io_VMFile_getFreeSpace): likewise.
+ (Java_java_io_VMFile_getUsableSpace): likewise.
+ * native/jni/native-lib/cpio.h: (cpio_df): new function.
+ (CPFILE_DF_TYPE): enum type for cpio_df.
+ * native/jni/native-lib/cpio.c: (cpio_df): new function.
+ * include/java_io_VMFile.h: regenerated.
+ * configure.ac: added check for statvfs.
+
+2007-11-04 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33385:
+ * tools/com/sun/tools/javac/Main.java:
+ Make our wrapper 1.5 capable.
+
+2007-11-04 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/java/lang/MainThread.java:
+ Fix varargs warning.
+ * lib/Makefile.am:
+ Remove restriction on ecj printing varargs warnings.
+
+2007-11-01 Mario Torre <neugens@limasoftware.net>
+
+ PR classpath/33982:
+ * configure.ac: add GDK_CFLAGS for the GStreamer peer.
+
+2007-11-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/java/awt/java2d/ScanlineCoverage.java,
+ * gnu/javax/net/ssl/provider/ServerHandshake.java:
+ Fix non-ASCII characters in the Javadoc comments.
+ * gnu/java/lang/management/BeanImpl.java,
+ * gnu/javax/management/Server.java,
+ * gnu/xml/pipeline/EventFilter.java,
+ * java/awt/AWTKeyStroke.java,
+ * java/beans/DefaultPersistenceDelegate.java,
+ * java/beans/EventHandler.java,
+ * java/io/ObjectStreamClass.java,
+ * java/lang/Class.java,
+ * java/lang/reflect/Proxy.java,
+ * javax/management/NotificationBroadcasterSupport.java,
+ * javax/management/StandardMBean.java,
+ * javax/swing/TransferHandler.java:
+ Fix warnings from use of varargs methods.
+
+2007-10-27 Ian Rogers <ian.rogers@manchester.ac.uk>
+
+ * java/beans/PropertyChangeSupport.java,
+ * java/beans/VetoableChangeSupport.java,
+ * java/io/ObjectStreamClass.java,
+ * java/lang/reflect/Array.java,
+ * java/net/DatagramSocket.java,
+ * java/net/ServerSocket.java,
+ * java/net/Socket.java,
+ * java/nio/charset/CoderResult.java,
+ * java/security/Security.java,
+ * java/security/spec/RSAKeyGenParameterSpec.java,
+ * java/text/ChoiceFormat.java,
+ * java/text/DecimalFormat.java,
+ * java/text/MessageFormat.java:
+ Make use of new valueOf methods.
+
+2007-10-27 Ian Rogers <ian.rogers@manchester.ac.uk>
+
+ * java/io/OutputStreamWriter.java:
+ Make fields of this class that can be final, final.
+
+2007-10-27 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33385:
+ * tools/com/sun/tools/javac/Main.java:
+ Revert patch that adds bootclasspath.
+
+2007-10-22 Dalibor Topic <robilad@kaffe.org>
+
+ * native/jni/java-nio/gnu_java_nio_EpollSelectorImpl.c:
+ Include config-int.h for uint32_t.
+
+2007-10-16 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * NEWS: Kickoff updates for 0.97.
+ * configure.ac: Set version to 0.97-pre.
+ * doc/www.gnu.org/newsitems.txt: Add 0.96.1.
+ * doc/www.gnu.org/downloads/downloads.wml: Likewise.
+ * doc/www.gnu.org/announce/20071015.wml: Add missing URLs.
+ * doc/www.gnu.org/announce/20071016.wml: New file.
+
+2007-10-16 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Mention small compile/configure/build fixes.
+ * configure.ac: Set version to 0.96.1
+
+2007-10-16 from Alexandre Oliva <aoliva@redhat.com>
+
+ * scripts/check_jni_methods.sh: Don't depend on diff -b ignoring
+ a single trailing whitespace.
+
+2007-10-16 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * m4/acinclude.m4: Add -sourcepath so that
+ some proprietary JDKs don't try to compile the
+ whole of Classpath when testing the compiler.
+
+2007-10-16 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * doc/www.gnu.org/newsitems.txt: Add 0.96.
+ * doc/www.gnu.org/downloads/downloads.wml: Likewise.
+ * doc/www.gnu.org/announce/20071015.wml: New file.
+
+2007-10-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * NEWS: Kickoff updates for 0.97.
+ * configure.ac: Set version to 0.97-pre.
+
+2007-10-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * NEWS: Add date of 0.96 release.
+ * configure.ac: Set version to 0.96.
+
+2007-10-15 Mario Torre <neugens@limasoftware.net>
+
+ * doc/cp-hacking.texinfo: Update GConf requirement, and added information
+ about the GStreamer Sound peer.
+
+2007-10-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * README.gstreamer: Correct a few typos.
+ * doc/cp-hacking.texinfo: Update to match current status
+ (e.g. mention cacao, use of 1.5, etc.)
+
+2007-10-15 Roman Kennke <roman.kennke@aicas.com>
+
+ * java/awt/event/MouseEvent.java
+ (MouseEvent): For the no-absX/absY constructor, set the
+ absX/absY to 0, instead of calling into getLocationOnScreen(),
+ which might cause nasty deadlocks.
+
+2007-10-15 Mario Torre <neugens@limasoftware.net>
+
+ * javax/swing/text/DefaultStyledDocument.java (ElementBuffer.insertElement):
+ Added check for empty stack to avoid EmptyStackException.
+
+2007-10-15 Roman Kennke <roman.kennke@aicas.com>
+
+ * java/awt/LightweightDispatcher.java
+ (dispatchEvent): Don't synchronize on the AWT lock here,
+ this causes a deadlock in some situations.
+
+2007-10-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33385:
+ * tools/com/sun/tools/javac/Main.java:
+ Add bootclasspath and 1.5 options so the compiler
+ can run.
+
+2007-10-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33622:
+ * lib/Makefile.am: Use JAVAC_ARGS variable.
+ * m4/acinclude.m4: Check javac is 1.5 compliant
+ and whether it supports -J.
+
+2007-10-12 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/javax/swing/text/html/css/FontSize.java (mapPercent):
+ (mapPoints): prevent a NumberFormatException when a floating point is given
+ instead of a integer.
+ (mapPixels): likewise.
+ (mapPercent): likewise.
+
+2007-10-12 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/javax/sound/AudioSecurityManager.java: Added Copyright header.
+ (Permission): added missing javadoc.
+ (checkPermissions): likewise.
+
+2007-10-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33622:
+ * lib/Makefile.am: Add -J-mX512M option to
+ allow javac enough memory to build Classpath.
+
+2007-10-12 Roman Kennke <roman.kennke@aicas.com>
+
+ * NEWS: Added entry for Escher peers.
+
+2007-10-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * NEWS: Updated for 0.96
+
+2007-10-12 Robin Garner <robin.garner@anu.edu.au>
+
+ PR classpath/32541:
+ * java/io/OutputStreamWriter.java:
+ Provide buffering when not converting to improve
+ performance.
+
+2007-10-12 Ian Rogers <ian.rogers@manchester.ac.uk>
+
+ PR classpath/33746:
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:
+ Remove atexit call that makes JikesRVM deadlock.
+
+2007-10-12 Ian Rogers <ian.rogers@manchester.ac.uk>
+2007-10-12 Andrew Haley <aph@redhat.com>
+
+ PR classpath/33741:
+ * java/lang/Double.java:
+ (compare(double,double)): Increase performance
+ of this method.
+ * java/lang/Float.java:
+ (compare(float,float)): Likewise.
+
+2007-10-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33623:
+ * m4/acinclude.m4:
+ Fix typo which prevents --with-ecj being used.
+
+2007-10-11 Roman Kennke <roman.kennke@aicas.com>
+
+ * javax/swing/plaf/basic/BasicTreeUI.java
+ (EDIT): Removed obsolete constant.
+
+2007-10-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ Recommitting patch by Dalibor Topic from 2007-09-21.
+ * java/lang/management/ThreadInfo.java:
+ Removed unused private constructors.
+
+2007-10-09 Mario Torre <neugens@limasoftware.net>
+
+ * README.gstreamer: new file.
+
+2007-10-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/33623:
+ * examples/Makefile.am:
+ Exit with no compiler.
+ * lib/Makefile.am: Likewise.
+ * m4/acinclude.m4: Handle ecj and javac
+ using separate variables and catch when JAVAC/ECJ is
+ empty.
+
+2007-10-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ PR classpath/23854:
+ * java/util/zip/ZipEntry.java:
+ (parseExtra()): Pass time to setTime in milliseconds
+ rather than seconds by multiplying by 1000.
+
+2007-09-27 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java:
+ (gstreamer_get_audio_format_stream): Removed parameter from javadoc.
+ (gstreamer_get_audio_format_file): likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java:
+ Added class javadoc and implementation notes.
+ (READ): new constant.
+ (WRITE): likewise.
+ (QUEUED): likewise.
+ (CAPACITY_KEY): likewise.
+ (lock): likewise.
+ (prefs): new variable.
+ (GstPipeline constructor): added OS independent rutines to detect
+ filesystem pipes size plus save and restores this information via
+ preferences. Now closes open pipe on user abort at VM exit.
+ (open_native_pipe): new native method.
+ (close_native_pipe): likewise.
+ (detect_pipe_size): likewise.
+ (createForWrite): update to use new native methods.
+ (setState): removed hack to synchronize reading and writing of the
+ filesystme named pipe.
+ (available): implemented.
+ (drain): new implementation, now correctly waits for data to be consumed
+ in the pipeline.
+ (prepareWrite): removed hack to synchronize reading and writing of the
+ filesystme named pipe.
+ (CleanPipeline): new inner class, used for cleaning of native pipelines
+ still opened at VM exit.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine:
+ (getFramePosition): method still stubbed, now output "implement me"
+ note when called (used for testing).
+ (getLongFramePosition): likewise.
+ (getMicrosecondPosition): likewise.
+ * include/gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h:
+ regenerated.
+ * native/jni/gstreamer-peer/gst_native_data_line.c:
+ (setup_pipeline): Changed signature, now uses a file descriptor instead of
+ char with the name of the native pipeline. Also changed to use "fdsrc"
+ when creating the GStreamer pipeline.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine_setup_1sink_1pipeline):
+ now uses gst_native_pipeline_get_pipeline_fd to get the file descriptor
+ of the native pipeline, instead of gst_native_pipeline_get_pipeline_name.
+ Chaged to use "autoaudiosink" as GStreamer audio sink.
+ (gst_newpad): fix indentation.
+ * native/jni/gstreamer-peer/gst_native_pipeline.c: include new headers for
+ compilation.
+ (capacityFID): new filed for caching.
+ (GST_DETECTED_PIPE_CAPACITY): new field.
+ (enum): maps READ and WRITE in GstPipeline class.
+ (_GstNativePipelinePrivate.fd): new field.
+ (create_name): new function.
+ (init_pointer_IDs): likewise.
+ (get_free_space): likewise.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_init_1id_1cache):
+ cache capacityFID.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_init_1instance):
+ get value for GST_DETECTED_PIPE_CAPACITY from mapped class.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_set_1state):
+ removed "unused" attribute from parameters, clean pipeline name on exit.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_open_1native_1pipe):
+ new function.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_close_1native_1pipe):
+ likewise.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_create_1named_1pipe):
+ pipe name created with a dedicated function.
+ (Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_available): new
+ function.
+ * native/jni/gstreamer-peer/gst_native_pipeline.h:
+ (gst_native_pipeline_clean): removed.
+ (gst_native_pipeline_get_pipeline_fd): new function.
+ * native/jni/gstreamer-peer/gst_peer.h: new defines used by the peer.
+ * native/jni/gstreamer-peer/gstreamer_io_peer.c: (_GST_MALLOC_SIZE_): moved
+ in gst_peer.h.
+
+2007-09-27 Dalibor Topic <robilad@kaffe.org>
+
+ * native/fdlibm/dtoa.c: Include mprec.h after system includes.
+ * native/fdlibm/mprec.h [_EXFUN]: Only define _EXFUN if it is not
+ already defined.
+
+2007-09-24 Dalibor Topic <robilad@kaffe.org>
+
+ * java/lang/management/ThreadInfo.java: Reverted patch from
+ 2007-09-21, as it breaks JikesRVM.
+
+2007-09-23 Mark Wielaard <mark@klomp.org>
+
+ * doc/www.gnu.org/include/layout.wml: Fix Planet Classpath link.
+ * doc/www.gnu.org/faq/faq.wml: Fix typo prorietary.
+
+2007-09-22 Paul Jenner <psj@harker.dyndns.org>
+
+ * doc/www.gnu.org/include/layout.wml: Added link to Wiki.
+
+2007-09-21 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/java/rmi/server/RMIClassLoaderImpl.java,
+ java/beans/beancontext/BeanContextServicesSupport.java,
+ java/lang/management/ThreadInfo.java:
+ Removed unused private constructors.
+
+2007-09-21 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/CORBA/CDR/AbstractCdrInput.java,
+ gnu/CORBA/CDR/Vio.java,
+ gnu/CORBA/DynAn/gnuDynUnion.java,
+ gnu/CORBA/GIOP/MessageHeader.java,
+ gnu/CORBA/IorDelegate.java,
+ gnu/java/security/key/dss/FIPS186.java,
+ gnu/javax/crypto/key/dh/RFC2631.java,
+ gnu/javax/swing/text/html/parser/support/Parser.java,
+ gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java,
+ gnu/xml/aelfred2/XmlParser.java,
+ java/awt/im/InputContext.java:
+ Removed unused labels.
+
+2007-09-21 Roman Kennke <roman.kennke@aicas.com>
+
+ * javax/swing/plaf/basic/BasicGraphicsUtils.java
+ (drawStringUnderlineCharAt): Fix Y location of underline.
+
+2007-09-21 Roman Kennke <roman.kennke@aicas.com>
+
+ * java/awt/LightweightDispatcher.java
+ (dispatchEvent): Lock the component's tree to avoid threading
+ problems.
+ (redispatch): Only redispatch when component is showing.
+
+2007-09-21 Roman Kennke <roman.kennke@aicas.com>
+
+ * java/awt/Font.java
+ (hashCode): New field. Stores a cached hash code.
+ (hashCode()): Re-implemented. Don't create new string here, instead
+ make hashcode of name, style, size and transform. Cache hashcode.
+
+2007-09-20 Roman Kennke <roman.kennke@aicas.com>
+
+ * gnu/java/awt/font/GNUGlyphVector.java
+ (cleanOutline): New field, caches the untransformed outline.
+ (getOutline()): No need to validate here. Already done in
+ getOutline(float,float).
+ (getOutline(float,float)): Cache untransformed outlines. Protect
+ returned shape from modification by wrapping in ShapeWrapper
+ object.
+ * gnu/java/awt/font/OpenTypeFontPeer.java: New class. Implements
+ ClasspathFontPeer for OpenType fonts.
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (DEFAULT_TEXT_AA): New constant/property for controlling
+ default anti-aliasing for text.
+ (GC_CACHE_SIZE): New constant for the size of the glyph vector
+ cache.
+ (shapeCache): Don't make shapeCache thread local. This wouldn't
+ gain much, because the event dispatch thread is restarted quite
+ often.
+ (scanlineConverters): Don't make scanlineConverters thread local,
+ but instead pool them into a list.
+ (gvCache): New cache for glyph vectors.
+ (searchTextKey): New static field, a shared key used for GV caching.
+ (drawString): Cache glyph vectors.
+ (getFontRenderContext): Protect the current transform from beeing
+ changed.
+ (clone): Check clip for null when cloning.
+ (drawLine): Use shared shape cache. No need for calling a method here.
+ (drawRect): Likewise. Add translation to rectangle coordinates.
+ (fillRect): Use shared shape cache. No need for calling a method here.
+ (drawRoundRect): Likewise.
+ (fillRoundRect): Likewise.
+ (drawOval): Likewise.
+ (fillOval): Likewise.
+ (drawArc): Likewise.
+ (fillArc): Likewise.
+ (drawPolyline): Likewise.
+ (drawPolygon): Likewise.
+ (fillPolygon): Likewise.
+ (fillShape): Check property for default text AA. Set Y resolution.
+ (rawDrawLine): Use shared shape cache. No need for calling a method
+ here.
+ (rawDrawRect): Likewise.
+ (rawFillRect): Likewise.
+ (rawDrawString): Removed. Subclasses override drawString() instead.
+ (getShapeCache): Removed. No longer needed.
+ (getScanlineConverter): New helper method for pooling
+ scanline converters.
+ (freeScanlineConverter): New helper method for pooling
+ scanline converters.
+ * gnu/java/awt/java2d/PixelCoverage.java: New class. Used by the
+ reworked scanline converter.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (Y_RESOLUTION): Removed. The Y resolution is now specified
+ by the caller.
+ (yResolution): New field. Stores the Y resolution.
+ (renderShape): Take y resolution as argument.
+ (setResolution): Take y resolution as argument.
+ * gnu/java/awt/java2d/ShapeWrapper.java: New class. Protects
+ shape objects from modification by application code.
+ * gnu/java/awt/java2d/TextCacheKey.java: New class. Used for
+ caching GlyphVectors.
+ * gnu/java/awt/peer/x/XFontPeer2.java: Removed. This is now
+ implemented in OpenTypeFontPeer now.
+ * gnu/java/awt/peer/x/XEventPump.java
+ (handleEvent): Check insets.
+ * gnu/java/awt/peer/x/XFontPeer.java
+ Changed class and method names for changed Escher API.
+ (clinit): Use font properties from xfonts.properties.
+ (canDisplay): Changed to take int argument.
+ * gnu/java/awt/peer/x/XFramePeer.java
+ (XFramePeer): Set the title of the frame on creation time.
+ (setTitle): Implemented.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (imageCache): New field. Caches native representations for
+ images.
+ (drawString): New method. Optimized version for X fonts.
+ (fillScanline): Removed.
+ (fillScanlineAA): Removed.
+ (rawDrawImage): Optimized drawing for ZPixmap-backed images.
+ (rawDrawRect): Optimized rectangle drawing.
+ (renderScanline): Added compositing code.
+ (setFont): Overridden for X font support.
+ (setPaint): Added TODO.
+ * gnu/java/awt/peer/x/XGraphicsConfiguration.java
+ (getSize): New helper method for XToolkit.
+ (getResolution): New helper method for XToolkit.
+ * gnu/java/awt/peer/x/XGraphicsEnvironment.java
+ (getAvailableFontFamilyNames): Implemented.
+ * gnu/java/awt/peer/x/XToolkit.java
+ (fontCache): New field for caching fonts.
+ (getClasspathFontPeer): Cache fonts.
+ (getScreenSize): Implemented.
+ (getScreenResolution): Implemented.
+ (getFontList): Implemented.
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/x/XWindowPeer.java
+ (insets): New field for storing the insets of the frame.
+ (XWindowPeer): Set correct decoration.
+ (getGraphics): Set foreground, background and font.
+ (show): Determine the correct frame extents.
+ (reshape): Only resize when not inside callback.
+ (insets): Implemented correctly.
+ (getFontMetrics): Use OpenTypeFontPeer.
+ * gnu/java/awt/peer/x/ZPixmapDataBuffer.java
+ (getZPixmap): New method. This is used in XGraphics2D for drawing
+ the buffer.
+ * gnu/java/util/LRUCache.java: New class. Implements an LRU cache.
+
+2007-09-19 Dalibor Topic <robilad@kaffe.org>
+
+ * native/jni/native-lib/Makefile.am
+ (AM_LDFLAGS) Use CLASSPATH_CONVENIENCE flags, as it is a convenience library.
+
+2007-09-19 Dalibor Topic <robilad@kaffe.org>
+
+ * native/fdlibm/dtoa.c: Include stdlib.h to have a declaration for free.
+
+2007-09-18 Dalibor Topic <robilad@kaffe.org>
+
+ * examples/gnu/classpath/examples/management/TestMemoryPool.java,
+ examples/gnu/classpath/examples/swing/DocumentFilterDemo.java,
+ examples/gnu/classpath/examples/swing/TableDemo.java,
+ gnu/CORBA/BigDecimalHelper.java,
+ gnu/CORBA/ByteArrayComparator.java,
+ gnu/CORBA/CollocatedOrbs.java,
+ gnu/CORBA/EmptyExceptionHolder.java,
+ gnu/CORBA/IorDelegate.java,
+ gnu/CORBA/OrbRestricted.java,
+ gnu/CORBA/ServiceRequestAdapter.java,
+ gnu/CORBA/gnuContextList.java,
+ gnu/CORBA/gnuExceptionList.java,
+ gnu/CORBA/gnuRequest.java,
+ gnu/CORBA/CDR/LittleEndianInputStream.java,
+ gnu/CORBA/DynAn/DivideableAny.java,
+ gnu/CORBA/DynAn/gnuDynArray.java,
+ gnu/CORBA/GIOP/CodeSetServiceContext.java,
+ gnu/CORBA/Interceptor/IORInterceptors.java,
+ gnu/CORBA/NamingService/NameParser.java,
+ gnu/CORBA/Poa/gnuPOAManager.java,
+ gnu/classpath/jdwp/event/filters/StepFilter.java,
+ gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java,
+ gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java,
+ gnu/java/awt/ClasspathToolkit.java,
+ gnu/java/awt/EmbeddedWindow.java,
+ gnu/java/awt/peer/KDEDesktopPeer.java,
+ gnu/java/awt/peer/gtk/CairoSurface.java,
+ gnu/java/awt/peer/swing/SwingCheckboxPeer.java,
+ gnu/java/awt/peer/swing/SwingTextAreaPeer.java,
+ gnu/java/awt/peer/swing/SwingTextFieldPeer.java,
+ gnu/java/awt/print/PostScriptGraphics2D.java,
+ gnu/java/awt/print/SpooledDocument.java,
+ gnu/java/io/PlatformHelper.java,
+ gnu/java/lang/management/BeanImpl.java,
+ gnu/java/locale/LocaleHelper.java,
+ gnu/java/net/protocol/http/Request.java,
+ gnu/java/nio/DatagramChannelImpl.java,
+ gnu/java/nio/KqueueSelectionKeyImpl.java,
+ gnu/java/nio/NIOSocket.java,
+ gnu/java/nio/ServerSocketChannelImpl.java,
+ gnu/java/nio/SocketChannelImpl.java,
+ gnu/java/rmi/server/RMIObjectInputStream.java,
+ gnu/java/util/regex/RE.java,
+ gnu/javax/imageio/bmp/DecodeBF16.java,
+ gnu/javax/imageio/bmp/EncodeRGB32.java,
+ gnu/javax/imageio/jpeg/JPEGDecoder.java,
+ gnu/javax/imageio/jpeg/JPEGException.java,
+ gnu/javax/imageio/jpeg/JPEGImageInputStream.java,
+ gnu/javax/imageio/png/PNGChunk.java,
+ gnu/javax/imageio/png/PNGEncoder.java,
+ gnu/javax/imageio/png/PNGFile.java,
+ gnu/javax/imageio/png/PNGGamma.java,
+ gnu/javax/net/ssl/SSLRecordHandler.java,
+ gnu/javax/net/ssl/StaticTrustAnchors.java,
+ gnu/javax/net/ssl/provider/CertificateRequestBuilder.java,
+ gnu/javax/net/ssl/provider/ClientHandshake.java,
+ gnu/javax/net/ssl/provider/ClientPSKParameters.java,
+ gnu/javax/net/ssl/provider/ClientRSA_PSKParameters.java,
+ gnu/javax/net/ssl/provider/ContentType.java,
+ gnu/javax/net/ssl/provider/EncryptedPreMasterSecret.java,
+ gnu/javax/net/ssl/provider/Handshake.java,
+ gnu/javax/net/ssl/provider/InputSecurityParameters.java,
+ gnu/javax/net/ssl/provider/OutputSecurityParameters.java,
+ gnu/javax/net/ssl/provider/ProtocolVersion.java,
+ gnu/javax/net/ssl/provider/Random.java,
+ gnu/javax/net/ssl/provider/SRPTrustManagerFactory.java,
+ gnu/javax/net/ssl/provider/ServerDHE_PSKParameters.java,
+ gnu/javax/net/ssl/provider/SessionImpl.java,
+ gnu/javax/net/ssl/provider/Signature.java,
+ gnu/javax/net/ssl/provider/SimpleSessionContext.java,
+ gnu/javax/net/ssl/provider/TLSHMac.java,
+ gnu/javax/net/ssl/provider/TrustedAuthorities.java,
+ gnu/javax/net/ssl/provider/UnresolvedExtensionValue.java,
+ gnu/javax/net/ssl/provider/X509KeyManagerFactory.java,
+ gnu/javax/security/auth/Password.java,
+ gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java,
+ gnu/javax/sound/midi/file/MidiFileWriter.java,
+ gnu/javax/sound/sampled/AU/AUReader.java,
+ gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java,
+ gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java,
+ gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java,
+ gnu/xml/dom/html2/DomHTMLButtonElement.java,
+ gnu/xml/dom/html2/DomHTMLCollection.java,
+ gnu/xml/dom/html2/DomHTMLParser.java,
+ gnu/xml/stream/EndDocumentImpl.java,
+ gnu/xml/stream/SAXParser.java,
+ gnu/xml/stream/XIncludeFilter.java,
+ gnu/xml/stream/XMLEventImpl.java,
+ gnu/xml/transform/StreamSerializer.java,
+ gnu/xml/transform/Stylesheet.java,
+ gnu/xml/validation/datatype/Base64BinaryType.java,
+ gnu/xml/validation/datatype/BooleanType.java,
+ gnu/xml/validation/datatype/DecimalType.java,
+ gnu/xml/validation/datatype/DoubleType.java,
+ gnu/xml/validation/datatype/FloatType.java,
+ gnu/xml/validation/datatype/HexBinaryType.java,
+ gnu/xml/validation/datatype/NotationType.java,
+ gnu/xml/validation/datatype/SimpleType.java,
+ gnu/xml/validation/datatype/StringType.java,
+ gnu/xml/validation/datatype/Type.java,
+ gnu/xml/validation/datatype/TypeBuilder.java,
+ gnu/xml/validation/relaxng/FullSyntaxBuilder.java,
+ gnu/xml/validation/xmlschema/XMLSchemaAttributeTypeInfo.java,
+ gnu/xml/validation/xmlschema/XMLSchemaBuilder.java,
+ gnu/xml/validation/xmlschema/XMLSchemaElementTypeInfo.java,
+ gnu/xml/xpath/XPathParser.java,
+ java/awt/MenuShortcut.java,
+ java/awt/font/LineBreakMeasurer.java,
+ java/awt/font/TextMeasurer.java,
+ java/awt/image/BufferedImage.java,
+ java/beans/beancontext/BeanContextServicesSupport.java,
+ java/security/SecureClassLoader.java,
+ java/security/cert/CertificateFactory.java,
+ javax/imageio/metadata/IIOMetadataFormatImpl.java,
+ javax/imageio/stream/MemoryCacheImageInputStream.java,
+ javax/management/ObjectName.java,
+ javax/management/openmbean/ArrayType.java,
+ javax/net/ssl/HttpsURLConnection.java,
+ javax/print/attribute/standard/JobStateReasons.java,
+ javax/swing/RepaintManager.java,
+ javax/swing/plaf/basic/BasicDirectoryModel.java,
+ javax/swing/plaf/basic/BasicFileChooserUI.java,
+ javax/swing/plaf/basic/BasicLabelUI.java,
+ javax/swing/plaf/metal/MetalScrollButton.java,
+ javax/swing/table/DefaultTableCellRenderer.java,
+ javax/swing/text/ParagraphView.java,
+ javax/swing/text/html/ResetableToggleButtonModel.java,
+ javax/swing/text/html/parser/Entity.java,
+ javax/swing/tree/DefaultTreeCellRenderer.java,
+ javax/xml/datatype/DatatypeFactory.java,
+ javax/xml/stream/XMLEventFactory.java,
+ javax/xml/stream/XMLInputFactory.java,
+ org/omg/IOP/TaggedComponentHelper.java,
+ sun/reflect/annotation/ExceptionProxy.java,
+ tools/gnu/classpath/tools/appletviewer/Main.java,
+ tools/gnu/classpath/tools/appletviewer/PluginAppletWindow.java,
+ tools/gnu/classpath/tools/orbd/Main.java,
+ tools/gnu/classpath/tools/rmic/ClassRmicCompiler.java,
+ tools/gnu/classpath/tools/rmic/Main.java,
+ tools/gnu/classpath/tools/rmid/Main.java,
+ tools/gnu/classpath/tools/tnameserv/Main.java,
+ vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java,
+ vm/reference/java/lang/VMClass.java,
+ vm/reference/java/security/VMSecureRandom.java:
+ Removed unused imports.
+
+2007-09-18 Dalibor Topic <robilad@kaffe.org>
+
+ * examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/StructureToPassHelper.java,
+ examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/StructureToReturnHelper.java,
+ examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/TreeNodeHelper.java,
+ examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/WeThrowThisExceptionHelper.java,
+ examples/gnu/classpath/examples/awt/AnimationApplet.java: Removed unused imports.
+
+2007-09-18 Dalibor Topic <robilad@kaffe.org>
+
+ * .classpath: Reverted escher-specific changes that break
+ the build under Eclipse.
+
+2007-09-16 Mark Wielaard <mark@klomp.org>
+
+ * examples/Makefile.am (JCOMPILER): Add tools.zip for ecj.
+
+2007-09-14 Roman Kennke <roman@kennke.org>
+
+ * .classpath: Include javah in Eclipse build.
+
+2007-09-13 David P Grove <groved@us.ibm.com>
+
+ PR 30275
+ * native/fdlibm/fdlibm.h [_AIX]: Define _ALL_SOURCE
+ rather than _XOPEN_SOURCE to fix build on AIX 5.
+
+2007-09-12 Robert Schuster <robertschuster@fsfe.org>
+
+ * native/jni/java-net/gnu_java_net_local_LocalSocketImpl.c:
+ Add #ifndef guard around definition of _GNU_SOURCE.
+
+2007-09-12 Dalibor Topic <robilad@kaffe.org>
+
+ * examples/Makefile.am, tools/Makefile.am
+ (GLIBJ_CLASSPATH): Removed unnecessary paths to avoid
+ using unix path separators on windows.
+ (JCOMPILER) Don't add '.' to classpath for javac.
+ Fixes the build on Cygwin.
+
+2007-09-11 Roman Kennke <roman@kennke.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
+ Removed unused includes.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
+ Removed unused includes.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
+ Removed unusued excludes. Put Xrender includes in HAVE_XRENDER
+ conditional.
+ (flush): Use gdk_display_flush() instead of XFlush().
+ (initState): Use GDK/Cairo functions to get cairo_t object.
+ (initFromVolatile): Likewise.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
+ Removed unused includes.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c
+ Use HAVE_XTEST conditionals for code that uses XTest.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
+ Removed unused includes.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ Removed unused includes.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c
+ Removed unused includes.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+ Removed unused includes. Rewrote frame-extents code to use
+ gdk_window_get_frame_extents() rather than the X window properties
+ directly.
+ * include/gnu_java_awt_peer_gtk_ComponentGraphics.h
+ (initFromVolatile): Removed width and height parameters.
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java
+ (initFromVolatile): Remove width and height parameters.
+ * gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+ (VolatileImageGraphics): Use initFromVolatile without width and
+ height.
+ * configure.ac: Check for presence of XTest, and define HAVE_XTEST
+ accordingly.
+
+2007-09-08 Michael Koch <konqueror@gmx.de>
+
+ * native/jni/midi-alsa/Makefile.am (AM_CFLAGS):
+ Removed @ERROR_CFLAGS@ to not fail build with GCC 4.2.
+
+2007-09-05 Andrew Haley <aph@redhat.com>
+
+ * gnu/javax/crypto/jce/DiffieHellmanImpl.java (engineDoPhase):
+ Don't check the length of q.
+
+2007-08-30 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * include/jni.h (jobjectRefType): New type.
+ (JNI_VERSION_1_6): Added.
+ (JNINativeInterface_): Added GetObjectRefType.
+ (_Jv_JNIEnv): Likewise.
+
+2007-08-28 John X <johnx@dodgit.com>
+
+ PR classpath/33206:
+ * java/math/BigInteger.java (isProbablePrime): Handle case of
+ large 'b'.
+
+2007-08-24 Mark Wielaard <mark@klomp.org>
+
+ * include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: Regenerated.
+
+2007-08-23 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java:
+ (getLocationOnScreen): Check for GTK main thread.
+ (gtkWidgetGetLocationOnScreenUnlocked): New native method.
+ (gtkWindowGetLocationOnScreenUnlocked): New native method.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:
+ (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreen):
+ Delegate to unlocked function.
+ (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreenUnlocked):
+ New function.
+ (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen):
+ Delegate to unlocked function.
+ (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreenUnlocked):
+ New function.
+
+2007-08-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/util/EnumSet.java:
+ Documented.
+ (complementOf(EnumSet)): Fixed to flip only
+ the bits used by the enumset.
+
+2007-08-20 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * vm/reference/java/lang/VMClass.java:
+ (getCanonicalName(Class)): Fix handling of member
+ classes so we don't fall out of the if block.
+ (getSimpleName(Class)): Handle class names which include
+ the $ sign to break up anonymous/inner/member classes.
+
+2007-08-19 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java:
+ (getAudioFileFormat (File)): method implemented.
+ (getAudioFileFormat (InputStream)): likewise.
+ (getAudioFileFormat(InputStream, String)): new method.
+ (getAudioInputStream): better exception handling.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
+ (getAudioFormat): added basic extension detection for known files.
+ * gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java:
+ (BASIC_FORMATS): removed, unused.
+ (GST_TYPE_NAME): new constant.
+ (GST_FILE_EXTENSION): likewise.
+
+2007-08-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader:
+ Removed.
+ * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider:
+ Likewise.
+ * resource/META-INF/services/.cvsignore: Updated to reflect this.
+
+2007-08-19 Mario Torre <neugens@limasoftware.net>
+
+ * native/jni/gstreamer-peer/gst_native_pipeline.c:
+ (init_pointer_IDs): fix typo that prevents compilation on 64 bit systems.
+
+2007-08-19 Mario Torre <neugens@limasoftware.net>
+
+ * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider:
+ regenerated to avoid listing by default of the
+ gnu.javax.sound.sampled.gstreamer.GStreamerMixerProvider class, as the
+ GStreamer Sound peer is not enabled unless specified at configure time.
+
+2007-08-18 Mario Torre <neugens@limasoftware.net>
+
+ * examples/gnu/classpath/examples/sound/AudioPlayerSample.java: new file.
+ * gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java: removed
+ unused import.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java:
+ (gstreamer_get_audio_format_stream): changed signature tu accept a Pointer
+ object instead of a BufferedInputStream.
+ (GstHeader):
+ (getAudioFormat(InputStream, GstHeader)): new private method.
+ (getAudioFormat(public)): refactored to use the private getAudioFormat
+ with shared functionality.
+ (getAudioFormat(GstHeader header)): removed a redundant check.
+ (init_id_cache): new native method.
+ * gnu/javax/sound/sampled/gstreamer/io/GstInputStream.java: new file.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java:
+ (GstDataLine.State): removed enum.
+ (state): removed local variable.
+ (isRunning): removed method.
+ (open): likewise.
+ (setFormat): new methods.
+ (setOpen): likewise.
+ (setBufferSize): likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java:
+ (createSourcePipeline): new method.
+ (setup_sink_pipeline): likewise.
+ (init_id_cache): likewise. Added to the static initializer.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java:
+ (GstPipeline.State): new enum.
+ (state): new local variable.
+ (name): likewise.
+ (output): likewise.
+ (source): likewise.
+ (ready): likewise.
+ (getState): new method.
+ (closePipe): likewise.
+ (create_named_pipe): likewise.
+ (set_state): likewise.
+ (available): likewise.
+ (drain): likewise.
+ (GstPipeline): likewise.
+ (close): likewise.
+ (prepareWrite): likewise.
+ (flush): likewise.
+ (write): likewise.
+ (init_instance): likewise.
+ (read): likewise.
+ (createForWrite): likewise.
+ (setState): likewise.
+ (getNativeClass): likewise.
+ (init_id_cache): likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java:
+ (pipeline): new local variable.
+ (opne): likewise.
+ (isActive): method implemented.
+ (stop): likewise.
+ (open): likewise.
+ (flush): likewise.
+ (isRunning): likewise.
+ (start): likewise.
+ (write): likewise.
+ (available): likewise.
+ (drain): likewise.
+ (close): likewise.
+ * include/Makefile.am: added entry to generate new header file.
+ * include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h:
+ regenerated.
+ * include/gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h: likewise.
+ * include/gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h:
+ likewise.
+ * include/gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h:
+ likewise.
+ * native/jni/gstreamer-peer/gstclasspathsrc.c: removed.
+ * native/jni/gstreamer-peer/gstinputstream.c: likewise.
+ * native/jni/gstreamer-peer/GStreamerIOPeer.c: likewise.
+ * native/jni/gstreamer-peer/gstinputstream.h: likewise.
+ * native/jni/gstreamer-peer/gstclasspathsrc.h: likewise.
+ * native/jni/gstreamer-peer/Makefile.am: new file added for compilation.
+ code reformat to keep the 80 columns constraint.
+ * native/jni/gstreamer-peer/gst_native_pipeline.h: new file.
+ * native/jni/gstreamer-peer/gst_input_stream.c: likewise.
+ * native/jni/gstreamer-peer/gst_input_stream.h: likewise.
+ * native/jni/gstreamer-peer/gst_classpath_src.c: likewise.
+ * native/jni/gstreamer-peer/gst_native_pipeline.c: likewise.
+ * native/jni/gstreamer-peer/gst_native_data_line.c: likewise.
+ * native/jni/gstreamer-peer/gst_classpath_src.h: likewise.
+ * native/jni/gstreamer-peer/gstreamer_io_peer.c: likewise.
+ * native/jni/gstreamer-peer/gst_peer.c: likewise.
+ * native/jni/gstreamer-peer/gst_peer.h: likewise.
+
+2007-08-16 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * NEWS: Update with info on VM changes.
+ * vm/reference/gnu/java/lang/management/VMMemoryMXBeanImpl.java:
+ (getHeapMemoryUsage()): New default implementation.
+ (getNonHeapMemoryUsage()): Likewise.
+
+2007-08-15 Tom Tromey <tromey@redhat.com>
+
+ * java/util/LinkedHashSet.java (LinkedHashSet): Fix typo.
+
+2007-08-15 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/Class.java (internalGetFields): Use LinkedHashSet.
+
+2007-08-08 Mario Torre <neugens@limasoftware.net>
+
+ * java/io/PipedInputStream.java:
+ (buffer): variable now initialized in constructors.
+ (PipedInputStream(int)): new constructor, creates the buffer
+ storage of size int.
+ (PipedInputStream()): now calls PipedInputStream(int) with
+ default capacity.
+ (PipedInputStream(PipedOutputStream)): now calls PipedInputStream().
+ (PipedInputStream(PipedOutputStream, int)): new constructor.
+
+2007-07-31 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * tools/gnu/classpath/tools/javah/Main.java (writeHeaders):
+ Renamed filename to file.
+ * tools/gnu/classpath/tools/javah/CniIncludePrinter.java
+ (printClass): Likewise.
+ * tools/gnu/classpath/tools/javah/JniIncludePrinter.java
+ (printClass): Replace '$' with '_' in filename.
+
+2007-07-31 Dalibor Topic <robilad@kaffe.org>
+
+ PR 32844
+ * java/util/EnumSet.java:
+ Made class abstract per API spec.
+ (size, iterator, add, addAll, clear, contains,
+ containsAll, remove, removeAll, retainAll) Moved
+ into an anonymous inner class in of(T).
+ (allOf, noneOf, copyOf, of, range) Made more
+ implementation independent.
+ (of(T)) return an instance of an anonymous class
+ implementing EmptySet.
+
+2007-07-28 Matthias Klose <doko@ubuntu.com>
+
+ * include/jvmti.h (jniNativeInterface): Rename type.
+
+2007-07-28 Chris Burdess <dog@gnu.org>
+
+ PR 32539
+ * gnu/xml/stream/XMLParser.java: don't call next() during hasNext().
+
+2007-07-24 Tom Tromey <tromey@redhat.com>
+
+ PR java/32862:
+ * java/util/EnumMap.java (get): Special case emptySlot.
+ (clone): Rewrote.
+
+2007-07-23 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/java/nio/charset/ISO_8859_1.java: Added ISO8859-1 to
+ aliases.
+
+2007-07-23 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * vm/reference/sun/misc/Unsafe.java (unpark): Changed signature to
+ be compatible with OpenJDK.
+
+2007-07-13 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (clip(Shape)): Call setClip when the clip changes.
+ (drawImage): Add translation.
+ (drawLine): Add translation.
+ * gnu/java/awt/peer/x/PixmapVolatileImage.java
+ (getPixmap): New method.
+ * gnu/java/awt/peer/x/XEventPump.java
+ (XEventPump): Name thread. Start as daemon thread.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (rawDrawImage): Special handling for PixmapVolatileImage.
+ (rawDrawLine): Don't add translation here. This is done in
+ the superclass.
+ (rawFillRect): Don't add translation here. This is done in
+ the superclass.
+ (renderScanline): Added null check.
+
+2007-07-13 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/x/PixmapVolatileImage.java: New class.
+ * gnu/java/awt/peer/x/XGraphicsConfiguration.java
+ (createCompatibleImage(int,int)): Delegate to the 3-int overload.
+ (createCompatibleImage(int,int,int)): Implemented. Using
+ the ZPixmapDataBuffer for OPAQUE images.
+ (createCompatibleVolatileImage(int,int)): Delegate to the 3-int
+ overload.
+ (createCompatibleVolatileImage(int,int,int)): Implemented. Using
+ PixmapVolatileImage.
+ * gnu/java/awt/peer/x/XWindowPeer.java
+ (createImage): Return a PixmapVolatileImage (for now).
+ (createVolatileImage): Implemented, using PixmapVolatileImage.
+ * gnu/java/awt/peer/x/ZPixmapDataBuffer.java
+ New class.
+
+2007-07-10 Roman Kennke <roman@kennke.org>
+
+ PR 32645
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
+ (copyPixbuf): Swap asserts.
+
+2007-07-09 Chris Burdess <dog@gnu.org>
+
+ Fixes #32672
+ * gnu/xml/dom/DomElement.java,
+ * gnu/xml/dom/DomNamedNodeMap.java: don't check owner in
+ setNamedNode when cloning.
+
+2007-07-08 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/javax/sound/sampled/gstreamer: new package hierarchy.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java: new file.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java:
+ likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java: likewise.
+ * gnu/javax/sound/AudioSecurityManager.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java: likewise.
+ * resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in:
+ likewise.
+ * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in:
+ likewise.
+ * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider:
+ likewise.
+ * native/jni/gstreamer-peer/gstclasspathsrc.c: likewise.
+ * native/jni/gstreamer-peer/gstclasspathsrc.h: likewise.
+ * native/jni/gstreamer-peer/gstinputstream.c: likewise.
+ * native/jni/gstreamer-peer/gstinputstream.h: likewise.
+ * native/jni/gstreamer-peer/GStreamerIOPeer.c: likewise.
+ * native/jni/gstreamer-peer/Makefile.am: likewise.
+ * native/jni/gstreamer-peer/.cvsignore: likewise.
+ * include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h:
+ likewise.
+ * include/Makefile.am: add gstreamer generated headers.
+ * configure.ac: add gstreamer sound backend configuration.
+ The backend is currently disabled by default.
+ * native/jni/Makefile.am: code to allow compilation of the gstreamer
+ sound backend.
+ * javax/sound/sampled/spi/MixerProvider.java (isMixerSupported):
+ indentation fixes.
+ * javax/sound/sampled/AudioFormat.java (toString): fix method to display
+ informations only when available.
+ * javax/sound/sampled/DataLine.java:
+ (Info.isFormatSupported): indentation fixes.
+ (Info): indentation fixes.
+ (Info.toString): indentation fixes.
+ (Info.matches): indentation fixes.
+
+2007-07-03 Tania Bento <tbento@redhat.com>
+
+ * java/lang/Integer.java:
+ (parseInt(String,int,boolean)): Throw NumberFormatException if
+ String is just "+".
+
+2007-07-01 Chris Burdess <dog@gnu.org>
+
+ * gnu/xml/transform/WithParam.java: Handle case where content is
+ empty.
+
+2007-06-28 Tom Tromey <tromey@redhat.com>
+
+ * include/jni.h: Fixed local variables.
+
+2007-06-26 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * ChangeLog: Correction of a bug fix number.
+
+2007-06-25 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/ClasspathFontPeer.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/gtk/GdkFontPeer.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ (postMouseEvent): Use MouseEvent constructor with absolute coordinates
+ to avoid deadlock (over getLocationOnScreen()).
+ * gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+ (getDeviceConfiguration): Fall back to the default configuration
+ if the component is not set.
+ * gnu/java/awt/peer/qt/QtFontMetrics.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/qt/QtFontPeer.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/x/XFontPeer2.java
+ (canDisplay): Take character as integer codepoint.
+ * include/gnu_java_awt_peer_qt_QtFontMetrics.h
+ (canDisplay): Take character as integer codepoint.
+ * java/awt/Font.java
+ (DIALOG): New constant.
+ (DIALOG_INPUT): New constant.
+ (MONOSPACED): New constant.
+ (SANS_SERIF): New constant.
+ (SERIF): New constant.
+ (Font(Font)): New constructor.
+ (canDisplay(char)): Use new canDisplay(int) method.
+ (canDisplay(int)): New method.
+ (hasLayoutAttributes): New method.
+ * java/awt/event/MouseEvent.java
+ (absX,absY): New fields.
+ (MouseEvent): New constructor with absolute coordinates.
+ (getLocationOnScreen): New method.
+ (getXOnScreen): New method.
+ (getYOnScreen): New method.
+ * native/jni/qt-peer/qtfontmetrics.cpp
+ (canDisplay): Take character as integer codepoint.
+
+2007-06-25 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/native-lib/cpnet.c
+ (cpnet_aton) Moved variable declaration of inet6_addr so it is
+ actually in the scope of its use.
+
+2007-06-25 Dalibor Topic <robilad@kaffe.org>
+
+ * native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
+ (THROW_NO_IPV6): New macro.
+ (Java_gnu_java_net_VMPlainSocketImpl_bind6) Conditionally
+ build code if IPv6 facilities are available, otherwise
+ throw an error.
+ (Java_gnu_java_net_VMPlainSocketImpl_setMulticastInterface6,
+ Java_gnu_java_net_VMPlainSocketImpl_join6,
+ Java_gnu_java_net_VMPlainSocketImpl_leave6,
+ Java_gnu_java_net_VMPlainSocketImpl_joinGroup6,
+ Java_gnu_java_net_VMPlainSocketImpl_leaveGroup6)
+ Use THROW_NO_IPV6.
+
+ * native/jni/java-net/java_net_VMInetAddress.c
+ (Java_java_net_VMInetAddress_getHostByAddr,
+ Java_java_net_VMInetAddress_getHostByName,
+ Java_java_net_VMInetAddress_aton) Build IPv6 dependant
+ code conditionally on IPv6 facilities being available.
+ Switched if-else blocks where necessary to allow that.
+
+ * native/jni/java-net/javanet.c
+ (_javanet_get_ip_netaddr) Build IPv6 dependant code conditionally
+ on IPv6 facilities being available.
+
+ * native/jni/native-lib/cpnet.c
+ (cpnet_getHostByName, cpnet_getHostByAddr) Build IPv6 dependant
+ code conditionally on IPv6 facilities being available.
+ (cpnet_aton) Moved variable declaration of inet6_addr to the scope
+ of its use. Build IPv6 dependant code conditionally
+ on IPv6 facilities being available.
+
+ * native/jni/native-lib/cpnet.h (cpnet_newIPV6Address,
+ cpnet_isIPV6Address, cpnet_IPV6AddressToBytes,
+ cpnet_bytesToIPV6Address): Make IPv6 dependant utility functions
+ available conditionally on IPv6 facilities being available.
+
+2007-06-25 Dalibor Topic <robilad@kaffe.org>
+
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAC): If the user passes an
+ explicit argument to configure, just use it, and don't attempt to
+ run AC_CHECK_PROG. This makes --with-javac="javac -J-Xmx512M" work.
+
+2007-06-25 Dalibor Topic <robilad@kaffe.org>
+
+ * configure.ac: Check for MSG_WAITALL, since it does not exist on
+ Cygwin.
+
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_receive): Define MSG_WAITALL as 0 if
+ it does not exist.
+
+2007-06-24 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ Fixes bug #31927
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_available): Retry using fstat if ioctl
+ fails with ENOTTY.
+
+2007-06-22 Tania Bento <tbento@redhat.com>
+
+ * java/util/Currency.java:
+ (getInstance (Locale)): Check that the country of the
+ locale given is valid. If it is not, throw an
+ IllegalArgumentException.
+
+2007-06-22 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/GLightweightPeer.java
+ * gnu/java/awt/peer/gtk/GdkRobotPeer.java
+ * gnu/java/awt/peer/gtk/GtkCompoonentPeer.java
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java
+ * gnu/java/awt/peer/qt/QtComponentPeer.java
+ * gnu/java/awt/peer/qt/QtFramePeer.java
+ * gnu/java/awt/peer/qt/QtWindowPeer.java
+ * gnu/java/awt/peer/swing/SwingComponentPeer.java
+ * gnu/java/awt/peer/swing/SwingWindowPeer.java
+ * gnu/java/awt/peer/x/XFramePeer.java:
+ Removed @Override annotations from some interface implementation
+ methods to ensure 1.5 compatibility.
+
+2007-06-22 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * include/jni.h (JNINativeInterface): Renamed to
+ JNINativeInterface_, added const to arguments where necessary.
+ (JNIInvokeInterface): Renamed to JNIInvokeInterface_.
+
+2007-06-22 Roman Kennke <roman@kennke.org>
+
+ * sun/awt/CausedFocusEvent.java: New class. Needed for compatibility
+ in java.awt.peer.
+ * java/awt/Dialog.java
+ (ModalExclusionType): New enum.
+ (ModalityType): New enum.
+ * java/awt/Toolkit.java
+ (isModalExclusionTypeSupported): New abstract method.
+ (isModalityTypeSupported): New abstract method.
+ * java/awt/peer/ComponentPeer.java
+ (requestFocus): New method.
+ * java/awt/peer/FramePeer.java
+ (getBoundsPrivate): New method.
+ * java/awt/peer/RobotPeer.java
+ (dispose): New method.
+ * java/awt/peer/WindowPeer.java
+ (setAlwaysOnTop): New method.
+ (updateFocusableWindowState): New method.
+ (setModalBlocked): New method.
+ (updateMinimumSize): New method.
+ (updateIconImages): New method.
+ * gnu/java/awt/peer/GLightweightPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/gtk/GdkRobotPeer.java
+ (dispose): New method.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java
+ (getBoundsPrivate): New method.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java
+ (updateIconImages): New method.
+ (updateMinimumSize): New method.
+ (setModalBlocked): New method.
+ (updateFocusableWindowState): New method.
+ (setAlwaysOnTop): New method.
+ * gnu/java/awt/peer/headless/HeadlessToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/qt/QtComponentPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/qt/QtFramePeer.java
+ (getBoundsPrivate): New method.
+ * gnu/java/awt/peer/qt/QtToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/qt/QtWindowPeer.java
+ (updateIconImages): New method.
+ (updateMinimumSize): New method.
+ (setModalBlocked): New method.
+ (updateFocusableWindowState): New method.
+ (setAlwaysOnTop): New method.
+ * gnu/java/awt/peer/swing/SwingComponentPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/swing/SwingToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/swing/SwingWindowPeer.java
+ (updateIconImages): New method.
+ (updateMinimumSize): New method.
+ (setModalBlocked): New method.
+ (updateFocusableWindowState): New method.
+ (setAlwaysOnTop): New method.
+ * gnu/java/awt/peer/x/XFramePeer.java
+ (getBoundsPrivate): New method.
+ * gnu/java/awt/peer/x/XToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+
+2007-06-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * tools/Makefile.am:
+ Compile in com.sun.tools.javah
+ * tools/com/sun/tools/javah/Main.java:
+ Javah Sun-->Classpath wrapper.
+
+2007-06-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * javax/swing/text/html/parser/AttributeList.java (getValues):
+ Check if values is null.
+
+2007-06-21 Roman Kennke <roman@kennke.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c:
+ Fix some type signatures.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c:
+ Fix intendation.
+
+2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/io/ObjectStreamClass.java (getClassUID): Return 0L for
+ enums and proxies.
+
+2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/net/URLClassLoader.java
+ (URLClassLoader(URL[],ClassLoader,URLStreamHandlerFactory):
+ Add factory to cache before calling addURLS.
+ (run): Don't call initCause() on ClassNotFoundException.
+
+2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+
+ Fixes #32356
+ * java/lang/reflect/Array.java
+ (newInstance(Class,int[])): Call createMultiArray correctly.
+ (createMultiArray): Fixed dimensions processing order.
+
+2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/java/net/loader/URLLoader.java
+ (URLLoader(URLClassLoader,URLStreamHandlerCache,
+ URLStreamHandlerFactory,URL,URL)): Disabiguate CodeSource constructor
+ invocation.
+ * java/awt/AWTKeyStroke.java
+ (LinkedHashMap.removeEldestEntry): Use Map.Entry to fix compile
+ error when compiled against OpenJDK java.util package.
+ * java/awt/AlphaComposite.java
+ (LinkedHashMap.removeEldestEntry): Use Map.Entry to fix compile
+ error when compiled against OpenJDK java.util package.
+
+2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/java/security/Engine.java
+ (getInstance(String,String,Provider,Object[]): Use correctly cased
+ property name.
+
+2007-07-19 Keith Seitz <keiths@redhat.com>
+
+ * classpath/gnu/classpath/jdwp/value/StringValue.java
+ (StringValue): Tag of StringValue is STRING not OBJECT.
+ (write): String values are written to the wire as tag byte
+ and object ID, not JdwpString.
+
+2007-07-19 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
+ (executeInvokeMethod): No need to use ValueFactory any more;
+ MethodResult.getReturnedValue now returns a Value.
+ (executeNewInstance): Double-check that return result is
+ an ObjectValue; throw JdwpInternalErrorException if it is not.
+ (invokeMethod): Method IDs come from VMMethod, not VMIdManager.
+ Arguments are Values not Objects.
+ Use ValueFactory to create arguments.
+ Pass invocation options to VMVirtualMachine.executeMethod.
+ Don't do any thread suspend/resume work: VMVM.executeMethod
+ will take care of it.
+ * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java
+ (executeInvokeMethod): Method IDs come from VMMethod, not
+ VMIdManager.
+ Arguments should be Values instead of Objects.
+ Use ValueFactory to create Values.
+ Remove specific option handling and pass options to
+ VMVirtualMachine.executeMethod.
+ Remove thread suspension.
+ Use MethodResult.getReturnedValue to get method's result.
+ * gnu/classpath/jdwp/util/MethodResult.java
+ (returnedValue): Change type to Value.
+ (thrownException): Change type to Throwable.
+ (resType): Remove.
+ (MethodResult): New constructor.
+ (setReturnedValue): Remove.
+ (SetThrownException): Remove.
+ (getResultType): Remove.
+ (setResultType): Remove.
+ * gnu/classpath/jdwp/value/ObjectValue.java (getValue):
+ New method.
+ * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
+ (executeMethod): Replace "nonVirtual" parameter with more
+ generic "options" parameter.
+ Replace java.lang.reflect.Method parameter with VMMethod.
+ Replace Objet[] parameter with Value[] parameter.
+
+2007-07-10 Dalibor Topic <robilad@kaffe.org>
+
+ * configure.ac (FOUND_CACAO): Removed.
+
+2007-06-01 Robin Garner <robin.garner@anu.edu.au>
+
+ Fixes #32162
+ * gnu/xml/dom/DomNode.java: Correct concurrency problem when deep
+ cloning nodes.
+
+2007-05-30 Mark Wielaard <mark@klomp.org>
+
+ Fixes bug #32030 reported by Steve.Blackburn@anu.edu.au
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_open): Only set O_TRUNC when
+ CPNIO_APPEND is not, but O_WRONLY is set.
+
+2007-05-25 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/java/awt/peer/x/XGraphics2D.java:
+ (rawDrawLine): Added addition of translation.
+ (rawFillRect): Dito.
+
+2007-05-25 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/java/awt/font/opentype/OpenTypeFont.java:
+ (getGlyphIndex): Call getGlyphCharMap() instead of
+ accessing cmap field directly.
+
+2007-05-24 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_available): Use fstat or select as an
+ alternative to ioctl.
+ * native/jni/native-lib/cpio.c(cpio_availableBytes): Corrected typo.
+
+2007-05-24 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/math/Fixed.java
+ (trunc): New method.
+
+2007-05-24 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (fillShape): Pass rendering hints to scanline converter.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (ONE): New constant for the number 1 as fixed point number.
+ (Y_RESOLUTION): New constant for the Y resolution.
+ (doScanline): Handle the Y resolution.
+ (renderShape): Accept rendering hints.
+ (setResolution): Adjust maximum resolution with Y resolution.
+ * gnu/java/awt/java2d/ScanlineCoverage.java
+ (Iterator.handledPixelCoverage): New field.
+ (Iterator.next): Handle single pixel coverage.
+ (Iterator.hasNext): Handle single pixel coverage.
+ (Iterator.reset): Reset single pixel coverage.
+ (Range.toString): New method.
+ (Coverage.pixelCoverage): New field.
+ (add): Include Y (pixel) coverage.
+ (findOrInsert): Reset Y coverage in reused entries.
+
+2007-05-24 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/java2d/ScanlineCoverage.java
+ (Iterator): New class.
+ (Range): New class.
+ (Coverage.covDelta): Made field package private.
+ (Coverage.xPos): Made field package private.
+ (iterator): New field. Stores the iterator that is reused.
+ (ScanlineCoverage): Initialize iterator.
+ (assertion): Removed.
+ (isEmpty): Refined conditions.
+ (iterate): Return Iterator instance.
+ (next): Removed. This is done by the Iterator class now.
+ (test): Removed.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (main): Removed.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (renderScanline): Adjust to new coverage iterator stuff.
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (renderScanline): Adjust to new coverage iterator stuff.
+
+2007-05-23 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/util/Arrays.java
+ (copyOfRange(T,int,int)): Fixed to instantiate right array type.
+
+2007-05-22 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/java/awt/peer/x/XEventQueue.java:
+ (handleEvent): Calculate modifier value for mouse presse
+ and release events, clip button values.
+ (buttonToModifier): New method.
+ * gnu/java/awt/peer/x/KeyboardMapping.java:
+ (mapModifiers): Added cases for alt gr and the meta key.
+
+2007-05-22 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/java/awt/peer/x/XEventQueue.java:
+ (handleEvent): Use Input.event_window_id for
+ key presses/releases.
+
+2007-05-22 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/java/awt/peer/x/XEventQueue.java:
+ (handleEvent): Use Input.event_window_id instead of
+ Input.child_window_id for mouse presses/releases &
+ movement.
+
+2007-05-22 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/x/XFontPeer2.java
+ (XFontMetrics.charWidth): Use cached Point2D instance.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (renderScanline): New method. Renders a scanline according to
+ the coverage information.
+ (setPaint): Call super, so that the state is updated correctly.
+
+2007-05-19 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR libgcj/31659
+ * m4/ax_create_stdint_h.m4: Apply patch from PR31659.
+
+2007-05-18 Andreas Tobler <a.tobler@schweiz.org>
+
+ * autogen.sh (have_libtool): Update comments for Darwin.
+
+2007-05-18 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (fillScanlineAA): Removed. Replaced by renderScanline().
+ (fillScanline): Dito.
+ (renderScanline): New method. Renders a scanline according to
+ the coverage information from the scanline converter.
+ * gnu/java/awt/java2d/Pixelizer.java: New interface. Describes
+ the targets of the rasterizer.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (alphaRes): Removed.
+ (ONE): Removed.
+ (scanlineCoverage): New field. Manages the coverage information.
+ (scanlinesPerPixel): Removed.
+ (scanlineXCov): Removed.
+ (scanlineYCov): Removed.
+ (slPix0): Removed.
+ (ScanlineConverter): Initialize scanline coverage data structure.
+ (clear): Also clear the scanline coverage.
+ (doScanline): Work with Pixelizer objects.
+ Use the ScanlineCoverage datastructure.
+ (main): New method. Performs some tests.
+ (renderShape): Work with pixelizer objects rather than directly
+ on AbstractGraphic2D. Adjust to use ScanlineCoverage datastructure.
+ (setResolution): Set resolution on ScanlineCoverage data too.
+ * gnu/java/awt/java2d/ScanlineCoverage.java: New class. Stores
+ and manages scanline coverage information.
+
+2007-05-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/rmi/MarshelledObject.java,
+ * java/rmi/activation/Activatable.java,
+ * java/rmi/activation/ActivationDesc.java,
+ * java/rmi/activation/ActivationGroup.java,
+ * java/rmi/activation/ActivationGroupDesc.java,
+ * java/rmi/activation/ActivationInstantiator.java,
+ * java/rmi/activation/ActivationMonitor.java,
+ * java/rmi/activation/Activator.java:
+ Genericized.
+
+2007-05-13 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * configure.ac:
+ Check if nsl library is needed for inet_pton.
+ * tools/gappletviewer.in,
+ * tools/gjar.in,
+ * tools/gjarsigner.in,
+ * tools/gjavah.in,
+ * tools/gkeytool.in,
+ * tools/gnative2ascii.in,
+ * tools/gorbd.in,
+ * tools/grmic.in,
+ * tools/grmid.in,
+ * tools/grmiregistry.in,
+ * tools/gserialver.in,
+ * tools/gtnameserv.in:
+ Remove spaces around '=' in setting of datarootdir.
+
+2007-05-11 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
+ (executeMethods): Remove cast to ClassReferenceTypeId.
+
+2007-05-11 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/lang/Float.java
+ (toString(float)): Call VMFloat instead of VMDouble.
+ (parseFloat): Call VMFloat. Fixed comment.
+ * vm/reference/java/lang/VMFloat.java
+ (toString, parseFloat): New methods.
+ NEWS: added note about these changes.
+
+2007-05-08 Kyle Galloway <kgallowa@redhat.com>
+
+ * vm/reference/VMFrame.java (<init>): Add a parameter for the "this"
+ pointer of the frame.
+
+2007-05-08 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/x/XFontPeer.java: Removed.
+ * gnu/java/awt/peer/x/XGraphics.java: Removed
+ * gnu/java/awt/peer/x/XFontPeer2.java
+ (XLineMetrics.getDescent): Use cached idendity transform.
+ (XFontMetrics.cachedPoint): New field. Caches a Point2D instance
+ for reuse.
+ (XFontMetrics.getAscent): Use cached idendity transform.
+ (XFontMetrics.getDescent): Use cached idendity transform.
+ (XFontMetrics.getHeight): Use cached idendity transform.
+ (XFontMetrics.charWidth): Map character to glyph index first.
+ (XFontMetrics.stringWidth): Use cached idendity transform.
+ (IDENDITY): New static field. A reused AffineTransform instance.
+
+2007-05-08 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/font/FontDelegate.java
+ (getGlyphIndex): New method. Maps characters to their
+ glyph index in the font.
+ M gnu/java/awt/font/opentype/OpenTypeFont.java
+ (getGlyphIndex): New method. Maps characters to their
+ glyph index in the font.
+
+2007-05-08 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (AA_SAMPLING): Removed.
+ (alpha): Removed field.
+ (edgeTable): Removed field.
+ (fillScanlineAA): Removed obsolete method.
+ (drawPolyline): Implemented by using a GeneralPath.
+ (drawPolygon): Reset the cached polygon.
+ (fillPolygon): Reset the cached polygon.
+ (fillShape): Default to antialias on for text.
+ (rawDrawLine): Use ShapeCache.
+ (rawDrawRect): Use ShapeCache.
+ (rawFillRect): Use ShapeCache.
+ (fillScanlineAA): New method for antialiased rendering.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (scanlinesPerPixel): New field.
+ (minX,maxX): New fields.
+ (scanlineYCov,scanlineXCov): New fields.
+ (slPix0): New field.
+ (alphaRes): New field.
+ (renderShape): Add antialiasing functionality.
+ (doScanline): Add antialiasing functionality.
+ (setResolution): Add antialiasing functionality.
+ (addShape): Determine span in X direction.
+ (fit): Fix thinko.
+ * gnu/java/awt/java2d/ShapeCache.java
+ (polyline): New field for caching polylines.
+
+2007-05-08 Roman Kennke <roman@kennke.org>
+
+ * examples/gnu/classpath/examples/awt/HintingDemo.java
+ Add support for showing the original vs the hinted glyphs plus
+ a grid.
+
+2007-05-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * lib/Makefile.am: Print property files as well.
+
+2007-05-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * native/jni/gtk-peer/gtkpeer.c:
+ Added support for 64-bit architectures.
+
+2007-05-04 Chris Burdess <dog@gnu.org>
+
+ Fixes PR #31814
+ * gnu/xml/dom/DomDocument.java,
+ gnu/xml/dom/ls/SAXEventSink.java: Don't default attribute when mode is
+ #IMPLIED and value is not specified.
+ * gnu/xml/stream/XMLParser.java: Add debugging info.
+
+2007-05-03 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/Jdwp.java (notify): Rewrite to call
+ new array-based method.
+ (notify): New function.
+ (sendEvent): Rewrite to use sendEvents.
+ (sendEvents): New method.
+ * gnu/classpath/jdwp/event/Event.java (toPacket): Make static.
+ Change parameters to use arrays for events and requests.
+ Add suspendPolicy parameter.
+ Move per-event data transformation to...
+ (_toData): ... here.
+ * gnu/classpath/jdwp/transport/JdwpConnection.java
+ (sendEvent): Renamed to ...
+ (sendEvents): ... this.
+ Change parameters to use arrays for events and requests.
+ Add suspendPolicy parameter.
+
+2007-05-03 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=237304
+ * javax/swing/text/html/HTMLEditorKit.java
+ (getStyleSheet): Throw RuntimeException when style loading fails.
+ * lib/Makefile.am: Treat css files as a property files.
+ * javax/swing/text/html/default.css: Move to...
+ * resource/javax/swing/text/html/default.css: New file.
+
+2007-05-03 Andrew Haley <aph@redhat.com>
+
+ * gnu/javax/management/Server.java (Server): Record the delegate.
+ (registerMBean): Notify the delegate.
+ (unregisterMBean): Likewise.
+ (notify): New method.
+
+2007-04-30 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/x/XLightweightPeer.java: Removed.
+ * gnu/java/awt/peer/x/XEventPump.java
+ (handleEvent): Improved handling of event ids to window mapping.
+ * gnu/java/awt/peer/x/XFontPeer2.java:
+ Load font.properties at startup.
+ (XLineMetrics.glyphVector): New field.
+ (XLineMetrics.XLineMetrics): Get glyphVector from font delegate.
+ (XLineMetrics.getHeight): Implemented using glyph vector.
+ (XLineMetrics.getLeading): Implemented.
+ (XFontPeer2): Change hardwired font to something more common.
+ (encodeFont): New methods, encodes a font to the font.properties
+ format.
+ (validName): New method. Checks and returns a valid font name.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (foreground): New field.
+ (rawSetPixel): Removed.
+ (rawDrawLine): Draw a segment.
+ (rawSetForeground): Removed.
+ (fillScanline): New method.
+ (fillScanlineAA): New method.
+ (setPaint): Set the foreground color.
+ (fillShape): Synchronize super behaviour.
+ (rawDrawImage): Optimize XImage.
+ * gnu/java/awt/peer/x/XGraphicsDevice.java
+ (getDisplay): Improve creation of socket.
+ (createLocalSocket): New helper method to create a local socket.
+ * gnu/java/awt/peer/x/XImage.java
+ (getGraphics): Return an XGraphics2D.
+ * gnu/java/awt/peer/x/XToolkit.java
+ (getClasspathFontPeer): Use XFontPeer2.
+ (createComponent): Removed.
+ * gnu/java/awt/peer/x/XWindowPeer.java
+ (getGraphics): Return an XGraphics2D.
+ (show): Clear the window.
+ (getFontMetrics): Use XFontPeer2.
+
+2007-04-30 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/swing/SwingButtonPeer.java
+ (SwingButton.handleFocusEvent): New method. Handles focus events.
+ (SwingButton.requestFocus): Overridden to avoid loop into peer
+ and back.
+ (SwingButton.requestFocus(boolean)): Overridden to avoid loop
+ into peer and back.
+ * gnu/java/awt/peer/swing/SwingCheckboxPeer.java: New class.
+ Implements CheckboxPeer for Swing toolkit.
+ * gnu/java/awt/peer/swing/SwingComponent.java
+ (handleFocusEvent): New method. Handles focus events.
+ * gnu/java/awt/peer/swing/SwingComponentPeer.java
+ (getMinimumSize): Delegate to minimumSize().
+ (getPreferredSize): Delegate to preferredSize().
+ (handleEvent): Only paint when component is showing. Coalesce
+ paint event in any case. Reformat. Handle focus events.
+ (requestFocus): Post FOCUS_GAINED event.
+ (handleFocusEvent): New method. Delegate to SwingComponent
+ object.
+ * gnu/java/awt/peer/swing/SwingContainerPeer.java
+ (addHeavyweightDescendent): Make this protected.
+ (removeHeavyweightDescendent): Make this protected.
+ (getHeavyweightDescendents): New method. Returns all registered
+ heavyweights.
+ (handleKeyEvent): Delegate to peer's handleEvent() method.
+ * gnu/java/awt/peer/swing/SwingLabelPeer.java
+ (SwingLabel.handleFocusEvent): New method.
+ * gnu/java/awt/peer/swing/SwingListPeer.java
+ (SwingList.handleFocusEvent): New method.
+ * gnu/java/awt/peer/swing/SwingPanelPeer.java
+ Fix typo and import.
+ * gnu/java/awt/peer/swing/SwingTextAreaPeer.java
+ Wrap up text area in viewport.
+ * gnu/java/awt/peer/swing/SwingTextFieldPeer.java
+ (SwingTextField.handleFocusEvent): New method.
+ (SwingTextField.requestFocus): New method.
+ (SwingTextField.requestFocus(boolean)): New method.
+
+2007-04-27 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/event/EventManager.java
+ (getEventRequest): Rename to...
+ (getEventRequests): ...this.
+ Change return type to array of requests.
+ Construct a list of all matching events and return
+ them all.
+ * gnu/classpath/jdwp/Jdwp.java (notify): Use getEventRequests
+ and send event notifications for all matching requests.
+
+2007-04-27 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/event/filters/LocationOnlyFilter.java
+ (matches): Use Location.equals to determine equality.
+ * vm/reference/gnu/classpath/jdwp/VMMethod.java (equals):
+ New method.
+ * gnu/classpath/jdwp/util/Location.java (equals):
+ New method.
+
+2007-04-27 Roman Kennke <roman@kennke.org>
+
+ * java/nio/CharViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/DoubleViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/FloatViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/IntViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/LongViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/ShortViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+
+2007-04-25 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/gtk/GdkFontPeer.java,
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
+ * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
+ * gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
+ * gnu/java/awt/peer/gtk/GtkGenericPeer.java,
+ * gnu/java/awt/peer/gtk/GtkToolkit.java:
+ Added fields to hold the native state. Added class initialization
+ things to fetch the JNI field IDs.
+ * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h,
+ * include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h,
+ * include/gnu_java_awt_peer_gtk_GtkGenericPeer.h,
+ * include/gnu_java_awt_peer_gtk_GtkToolkit.h:
+ Added / changed class init methods for field ID initialization.
+ * native/jni/classpath/Makefile.am: Removed native_state stuff.
+ * native/jni/classpath/native_state.c,
+ * native/jni/classpath/native_state.h: Removed.
+ * native/jni/gconf-peer/Makefile.am: Removed native_state stuff.
+ * native/jni/gtk-peer/Makefile.am: Removed native_state stuff.
+ * native/jni/gtk-peer/cairographics2d.h,
+ * native/jni/gtk-peer/gdkdisplay.h,
+ * native/jni/gtk-peer/gdkfont.h,
+ * native/jni/gtk-peer/GtkDragSourceContextPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollPanePeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,
+ * native/jni/gtk-peer/gtk_jawt.c:
+ Removed native state stuff and replaced that with an approach
+ to store the native state of an object directly in that object.
+ * native/jni/gtk-peer/gtkpeer.c: New file. Implements the new native
+ state management.
+ * native/jni/gtk-peer/gtkpeer.h: Remove NSA stuff and added
+ prototypes for new native state handling.
+
+2007-04-23 Mark Wielaard <mark@klomp.org>
+
+ * doc/www.gnu.org/newsitems.txt: Add 0.95.
+ * doc/www.gnu.org/downloads/downloads.wml: Likewise.
+ * doc/www.gnu.org/announce/20070423.wml: New file.
+
+2007-04-23 Mark Wielaard <mark@klomp.org>
+
+ * NEWS: Add new 0.95 features.
+
+2007-04-23 Jeroen Frijters <jeroen@frijters.net>
+
+ PR classpath/31646:
+ * java/util/Arrays.java (qsort): Corrected initial median calculation.
+
+2007-04-22 Dalibor Topic <robilad@kaffe.org>
+
+ * Makefile.am (ACLOCAL_AMFLAGS): Add contents of env var
+ LOCAL_AUTORECONF_AMFLAGS to allow for systems where the user
+ has a mix of system & hacked-up autotools.
+
+2007-04-22 Dalibor Topic <robilad@kaffe.org>
+
+ * autogen.sh: Removed unnecessary -I m4 flag.
+
+2007-04-19 Casey Marshall <csm@gnu.org>
+
+ PR classpath/31626:
+ * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
+ (createSocket): New method.
+
+2007-04-19 Dalibor Topic <robilad@kaffe.org>
+
+ * tools/gappletviewer.in,
+ tools/gjar.in,
+ tools/gjarsigner.in,
+ tools/gjavah.in,
+ tools/gkeytool.in,
+ tools/gnative2ascii.in,
+ tools/gorbd.in,
+ tools/grmic.in,
+ tools/grmid.in,
+ tools/grmiregistry.in,
+ tools/gserialver.in,
+ tools/gtnameserv.in: Set datarootdir to fix a warning from
+ configure.
+
+2007-04-19 Dalibor Topic <robilad@kaffe.org>
+
+ * INSTALL: Removed file generated by autogen.sh.
+
+ * .cvsignore: Added INSTALL.
+
+2007-04-19 Dalibor Topic <robilad@kaffe.org>
+
+ * INSTALL: Replaced by generic install file.
+
+ * autogen.sh: Removed redundant and no longer necessary
+ sections. Use autoreconf.
+
+2007-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * m4/acinclude.m4
+ (CLASSPATH_FIND_JAVAC): Allow detected JAVAC.
+
+2007-04-19 Dalibor Topic <robilad@kaffe.org>
+
+ * lib/Makefile.am (propertyfiles, cssfiles, metafiles,
+ iconfiles) Removed variables, inlined them into resource
+ target to avoid use of shell construct and fix portability
+ warning from automake 1.10.
+
+2007-04-18 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/MethodHelper.java (print):
+ Changed arguments. Directly print method name.
+ * tools/gnu/classpath/tools/javah/ClassWrapper.java
+ (methodNameMap): New field.
+ (makeVtable): Initialize it.
+ (printMethods): Compute name for bridge targets.
+
+2007-04-18 Andrew Haley <aph@redhat.com>
+
+ * gnu/java/rmi/server/UnicastConnectionManager.java
+ (UnicastConnectionManager(int port, RMIServerSocketFactory)):
+ Listen on "localhost", not localhost.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * include/GtkDragSourceContextPeer.h: Removed, renamed to ..
+
+ * include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h:
+ New file.
+
+ * native/jni/gtk-peer/GtkDragSourceContextPeer.c: Include
+ gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h.
+
+ * include/Makefile.am (GTKPEER_H_FILES): Renamed
+ GtkDragSourceContextPeer.h to
+ gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
+ per current convention. Use portable construct to create
+ gtk and libxmlj peer headers. Depend on the java source code,
+ rather then the class files in order to avoid spurious
+ regeneration.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * include/Makefile.am: Use portable construct to create
+ qt peer headers. Depend on the java source code,
+ rather then the class files in order to avoid spurious
+ regeneration.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * include/Makefile.am: Use portable construct to create
+ alsa and dssi peer headers. Depend on the java source code,
+ rather then the class files in order to avoid spurious
+ regeneration.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * include/Makefile.am: Use portable construct to create
+ gconf peer header. Depend on the java source code, rather
+ the class file to avoid spurious regeneration.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h:
+ Removed empty header file.
+
+ * include/Makefile.am (QTPEER_H_FILES):
+ Removed gnu_java_awt_peer_qt_QtGraphicsEnvironment.h.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * native/jni/xmlj/xmlj_xpath.c: Don't include
+ gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h.
+
+ * include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h:
+ Removed empty header file.
+
+ * include/Makefile.am (XMLJ_H_FILES): Removed
+ gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h.
+
+2007-04-18 Dalibor Topic <robilad@kaffe.org>
+
+ * include/gnu_java_awt_peer_qt_QtContainerPeer.h: Removed
+ empty header file.
+
+ * include/Makefile.am (QTPEER_H_FILES): Removed
+ gnu_java_awt_peer_qt_QtContainerPeer.h.
+
+2007-04-17 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * native/jni/java-net/local.c:
+ Fix import of FIONREAD.
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c,
+ * native/jni/native-lib/cpnet.c:
+ Likewise.
+
+2007-04-17 Dalibor Topic <robilad@kaffe.org>
+
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAH):
+ Use AC_CHECK_PROGS and AC_MSG_ERROR. Check for
+ gjavah, gcjh-wrapper-4.1 and gcjh-4.1. Error out
+ when no javah implementation can be found.
+
+2007-04-17 Dalibor Topic <robilad@kaffe.org>
+
+ * configure.ac (CLASSPATH_WITH_JAVAH): Only check if
+ the JNI headers need to be regenerated.
+
+ * m4/acinclude.m4 (USER_SPECIFIED_JAVAH): Removed unused
+ conditional.
+
+2007-04-17 Dalibor Topic <robilad@kaffe.org>
+
+ * lib/Makefile.am (JAVAH): Removed unused variable.
+
+2007-04-17 Casey Marshall <csm@gnu.org>
+
+ PR classpath/31302:
+ * gnu/javax/net/ssl/provider/SSLSocketImpl.java (SSLSocketImpl):
+ Always make a new socket.
+ (bind, connect, getInetAddress, getLocalAddress, getPort,
+ getLocalPort, getRemoteSocketAddress, getLocalSocketAddress,
+ setTcpNoDelay, getTcpNoDelay, setSoLinger, getSoLinger,
+ setOOBInline, getOOBInline, setSoTimeout, getSoTimeout,
+ setSendBufferSize, getSendBufferSize, setReceiveBufferSize,
+ getReceiveBufferSize, setKeepAlive, getKeepAlive, setTrafficClass,
+ getTrafficClass, setReuseAddress, getReuseAddress, close,
+ shutdownInput, shutdownOutput, isConnected, isBound, isClosed,
+ isInputShutdown, isOutputShutdown): Always use
+ 'underlyingSocket'.
+
+2007-04-16 Dalibor Topic <robilad@kaffe.org>
+
+ * configure.ac (AM_PROG_CC_C_O): Added to fix automake 1.10
+ warning.
+
+2007-04-16 Dalibor Topic <robilad@kaffe.org>
+
+ * native/plugin/Makefile.am (libgcjwebplugin_la_LDFLAGS):
+ Added AM_LDFLAGS for automake 1.10.
+
+2007-04-16 Tom Tromey <tromey@redhat.com>
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=236614
+ * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
+ (createSocket): Change order of delegation.
+
+2007-04-16 Andrew Haley <aph@redhat.com>
+
+ * java/io/ObjectInputStream.java: (parseContent): Call (String,
+ Object) version of dumpElementln.
+ (dumpElementln(String, Object)): New method.
+ * java/io/ObjectOutputStream.java (writeObject): Call (String,
+ Object) version of dumpElementln.
+ (dumpElementln(String, Object)): New method.
+
+2007-04-16 Mark Wielaard <mark@klomp.org>
+
+ Fixes bug #31590
+ * java/net/URI.java (parseServerAuthority): Allow empty portStr.
+
+2007-04-16 Andrew Haley <aph@redhat.com>
+
+ * org/omg/IOP/TaggedComponentHelper.java (read): Use
+ read_octet_array(), not read().
+ (write): Use write_octet_array(), not write().
+
+ * org/omg/PortableServer/Servant.java (_get_delegate): Throw if no
+ delegate has been set.
+
+2007-04-16 Chris Burdess <dog@gnu.org>
+
+ * gnu/xml/stream/XMLParser.java: Work around a problem with incorrectly
+ formatted file URLs.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * native/jni/java-lang/Makefile.am (libjavalang_la_LIBADD):
+ Fix portability warnings from automake 1.10.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * Makefile.am (EXTRA_DIST): Add ChangeLog-2006.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * native/target/.cvsignore: Removed.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * doc/Makefile.am: Fix portability warnings from
+ automake 1.10.
+
+2007-04-15 Roman Kennke <roman@kennke.org>
+
+ * native/target/Linux/.cvsignore,
+ * native/target/generic/.cvsignore: Removed.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * depcomp, install-sh, missing, mkinstalldirs,
+ doc/texinfo.tex: Removed files generated by autogen.sh.
+
+ * .cvsignore: Ignore generated files depcomp, install-sh,
+ missing, mkinstalldirs.
+
+ * doc/.cvsignore: Ignore generated file doc/texinfo.tex.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * doc/cp-hacking.texinfo: Updated with information from
+ INSTALL file. Removed duplicate and outdated information.
+ Updated compiler information. Fixed versioning information
+ where entries diverged. Turned command, option, file and
+ URL strings into proper texinfo elements.
+
+2007-04-15 Dalibor Topic <robilad@kaffe.org>
+
+ * configure.ac: Added support for Iceape libraries as
+ a substitute for Mozilla for Debian.
+
+2007-04-12 Roman Kennke <roman@kennke.org>
+
+ * java/nio/Buffer.java
+ (array): New abstract method.
+ (hasArray): New abstract method.
+ (arrayOffset): New abstract method.
+ (isDirect): New abstract method.
+
+2007-04-12 Roman Kennke <roman@kennke.org>
+
+ * java/nio/CharBuffer.java
+ (wrap(CharSequence,int,int)): Reimplemented using specialized
+ subclass.
+ * java/nio/CharSequenceBuffer.java: New class. Implements char
+ buffers that wrap CharSequences.
+
+2007-04-12 Francis Kung <fkung@redhat.com>
+
+ PR 23887
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawGlyphVector): Check for transforms before using optimized path.
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (FreetypeGlyphVector(FreetypeGlyphVector)): Initialize glyphTransforms array
+ to null and check for nulls in copied array.
+ (hasTransforms): New method.
+ (performDefaultLayout): Check for identity transform.
+ (setGlyphTransform): Check for equality before making changes.
+
+2007-04-12 Francis Kung <fkung@redhat.com>
+
+ PR 23887
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (getGlyphLogicalBounds): Fix number of coordinates in transform call.
+ (performDefaultLayout): Respect transformation in font attributes.
+ * javax/swing/plaf/basic/BasicProgressBarUI.java
+ (getStringPlacement): Handle vertical orientations.
+ (paintString): Space vertical text properly.
+
+2007-04-12 Francis Kung <fkung@redhat.com>
+
+ PR 31539
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (ft2_map): New static variable.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_initStaticState): Set up ft2_map.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Use cached ft2_map.
+
+2007-04-12 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
+ (clipboard_get_func): Call DeleteLocalRef.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
+ (clipboard_targets_received): Likewise.
+ (clipboard_uris_received): Likewise.
+
+2007-04-12 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * LICENSE: Added m4/ax_func_which_gethostbyname_r.m4 license.
+ * configure.ac: Added AX_FUNC_WHICH_GETHOSTBYNAME_R check.
+ * m4/ax_func_which_gethostbyname_r.m4: New file.
+ * native/jni/native-lib/cpnet.c (cpnet_getHostByName): Check for
+ different number of arguments of gethostbyname_r.
+
+2007-04-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/java/awt/peer/ClasspathFontPeer.java (LRUCache): New static
+ inner class.
+ (transCache): New static LRUChache field.
+ (copyTransformToAttrs): Check whether a TransformAttribute already
+ exists in the transCache for the given AffineTransform.
+
+2007-04-12 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac (COMPILE_GTK_PEER): Add check for cairo >= 1.1.8.
+
+2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * native/jni/java-nio/javanio.c: Include fcntl.h instead of
+ sys/fcntl.h.
+
+2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * native/jni/native-lib/cpproc.c (cpproc_forkAndExec): Fixed
+ warning on some compilers, e.g. MIPSpro.
+
+2007-04-11 Francis Kung <fkung@redhat.com>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Avoid unneeded
+ object reference.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics): Unlock font.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Remove redundant checks.
+
+2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * configure.ac: Added AC_C_INLINE.
+
+2007-04-10 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
+ (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile):
+ Destroy surface after it is used to create a cairo context.
+
+2007-04-09 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/ObjectName.java:
+ (parse(String)): Catch multiple wildcards,
+ initialise with an empty string (so null isn't
+ appended), and emit comma even when wildcard
+ ends the list.
+ (checkComponents()): Catch newlines.
+ (quote(String)): Handle newlines and quotes
+ correctly.
+
+2007-04-09 Francis Kung <fkung@redhat.com>
+
+ PR 31311
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java
+ (dispose): Removed method.
+ (disposeSurface): Removed method.
+ * gnu_java_awt_peer_gtk_ComponentGraphics.h: Regenerated.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
+ (Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface): Removed.
+ (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState): Destroy surface
+ after it is used to create a cairo context.
+
+2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/ObjectName.java:
+ (propertyValuePattern): New cache variable.
+ (parse(String)): Record in propertyListPattern
+ not propertyPattern and set propertyValuePattern.
+ (isPropertyPattern()): Semantics altered to be the
+ OR of isPropertyListPattern() and isPropertyValuePattern().
+ (isPropertyListPattern()): Implemented.
+ (isPropertyValuePattern()): Implemented.
+ (isPropertyValuePattern(String)): Implemented.
+
+2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/ObjectName.java:
+ (parse(String)): Fix result of getKeyPropertyListString().
+
+2007-04-07 Mark Wielaard <mark@klomp.org>
+
+ * resource/META-INF/services/javax.xml.parsers.DocumentBuilderFactor,
+ resource/META-INF/services/javax.xml.parsers.SAXParserFactory,
+ resource/META-INF/services/javax.xml.parsers.TransformerFactory,
+ resource/META-INF/services/org.relaxng.datatype.DatatypeLibraryFactory,
+ resource/META-INF/services/org.w3c.dom.DOMImplementationSourceList,
+ resource/META-INF/services/org.xml.sax.driver: Removed.
+
+2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/ObjectName.java:
+ (checkComponents()): Separate value and
+ key illegal characters to allow value wildcards.
+
+2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/ObjectName.java
+ (parse(String)): Fix parsing where the wildcard
+ is juxtaposed between other pairs.
+
+2007-04-06 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac (VERSION): Set to 0.96-pre.
+
+2007-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/MBeanAttributeInfo.java:
+ (serialVersionUID): Added.
+ * javax/management/MBeanFeatureInfo.java:
+ (writeObject(ObjectOutputStream)): Added for
+ later 1.6 support.
+ * javax/management/Notification.java:
+ (serialVersionUID): Added.
+ (Notification(String,Object,long,long)): Make
+ default message the empty string not null.
+ (Notification(String,Object,long,long,String)):
+ Set source explicitly.
+ (writeObject(ObjectOutputStream)): Added to match
+ Sun.
+
+2007-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/util/Hashtable.java:
+ (putAllInternal(Map)): Remove redundant semi-colon.
+
+2007-04-06 Mark Wielaard <mark@klomp.org>
+
+ * lib/mkcollections.pl.in: Add externalclasses.
+ * java/util/Collections.java: Unroll enhanced for loops.
+ * java/util/HashMap.java: Likewise.
+ * java/util/Hashtable.java: Likewise.
+ * java/util/TreeMap.java: Likewise.
+
+2007-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/javax/management/Translator.java:
+ (getTypeName(type)): Move type name creation to its own method.
+ * javax/management/ObjectName.java:
+ (WILDCARD): Added.
+
+2007-04-04 Andrew Haley <aph@redhat.com>
+
+ * javax/management/ObjectName.java:
+ (serialVersionUID): Declare.
+ Make all fields transient.
+ (parse): Break out from constructor.
+ (writeObject, readObject): New methods.
+
+2007-04-05 Francis Kung <fkung@redhat.com>
+
+ * include/Makefile.am: Remove old entry.
+
+2007-04-05 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkToolkit.java
+ (createDragGestureRecognizer): Remove failing subClass call.
+
+2007-04-05 Gary Benson <gbenson@redhat.com>
+
+ * java/util/GregorianCalendar.java
+ (computeFields): Fix WEEK_OF_MONTH calculation.
+
+2007-04-05 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ PR classpath/22800:
+ * native/jni/java-lang/java_lang_VMDouble.c (doubleToLongBits)
+ (doubleToRawLongBits, longBitsToDouble): Swap the byte
+ ordering for little-endian arms without VFP.
+
+2007-04-05 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * native/jni/java-net/java_net_VMNetworkInterface.c
+ [HAVE_IFADDRS_H && HAVE_GETIFADDRS] (free_netif_list): Added
+ #ifdef.
+ (getVMInterfaces): Added UNUSED argument attribute.
+
+2007-04-05 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * native/jni/java-nio/gnu_java_nio_charset_iconv_IconvDecoder.c,
+ native/jni/java-nio/gnu_java_nio_charset_iconv_IconvEncoder.c
+ [HAVE_ICONV] (createRawData, getData, infid, outfid): Added
+ #ifdef.
+ (openIconv): Added UNUSED argument attribute, so we can build with
+ -Werror.
+ (decode): Likewise.
+ (closeIconv): Likewise.
+
+2007-04-05 Mark Wielaard <mark@klomp.org>
+
+ * autogen.sh: Recognize automake 1.10.
+ * configure.ac (AM_INIT_AUTOMAKE): Add -Wno-portability.
+ * native/jawt/Makefile.am (libjawt_la_LDFLAGS): Add AM_LDFLAGS.
+ * native/jni/gconf-peer/Makefile.am (libgconfpeer_la_LDFLAGS): Likewise.
+ * native/jni/gtk-peer/Makefile.am (libgtkpeer_la_LDFLAGS): Likewise.
+ * native/jni/midi-alsa/Makefile.am (libgjsmalsa_la_LDFLAGS): Likewise.
+ * native/jni/midi-dssi/Makefile.am (libgjsmdssi_la_LDFLAGS): Likewise.
+ * native/jni/qt-peer/Makefile.am (libqtpeer_la_LDFLAGS): Likewise.
+
+2007-04-04 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
+ (cp_gtk_image_get_pixbuf): Return NULL when pointer is NULL.
+ * gnu/java/awt/peer/gtk/GtkImage.java (setImage): Set loaded and
+ call deliver() after pixels have been set.
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java (setIconImage): Only
+ set icon when image has been properly loaded.
+
+2007-04-04 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawCairoSurface): Made protected.
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java
+ (cairoDrawGlyphVector): Removed method.
+ (cairoSetFont): Removed method.
+ (disposeNative): Removed method.
+ (drawCairoSurface): New method.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector): Added
+ locking.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont): Added locking.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative): Added locking.
+
+2007-04-04 Gary Benson <gbenson@redhat.com>
+
+ * java/util/GregorianCalendar.java
+ (GregorianCalendar(TimeZone, Locale)): Remove redundant complete().
+
+2007-04-04 Roman Kennke <roman@kennke.org>
+
+ * java/nio/channels/spi/SelectorProvider.java
+ (inheritedChannel): Make method concrete and move default impl
+ to here. Perform security checks as mandated by the spec.
+ * gnu/java/nio/SelectorProviderImpl.java
+ (inheritedChannel): Removed. Default impl is in SelectorProvider.
+
+2007-04-04 Roman Kennke <roman@kennke.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (init_glib_threads): Create global reference on lock object.
+
+2007-04-04 Roman Kennke <roman@kennke.org>
+
+ * java/awt/Frame.java
+ (weakFrames): Make private.
+ (weakFramesQueue): New field. A reference queue to collect
+ GCed references.
+ (getFrames): Only do one iterations to avoid collecting null
+ references.
+ (hasDisplayableFrames): New helper method. Checks if there
+ are any displayable frames. This is used by the event queue
+ shutdown check.
+ (noteFrame): Clean up GCed frames in the list.
+ * java/awt/EventQueue.java
+ (isShutdown): Move frame checking code into Frame.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * java/lang/System.java
+ (inheritedChannel): New method, wraps
+ SelectorProvider.inheritedChannel().
+ * java/nio/channels/spi/SelectorProvider.java
+ (inheritedChannel): New abstract method.
+ * gnu/java/nio/SelectorProviderImpl.java
+ (inheritedChannel): New method, return null as default.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * java/nio/ByteOrder.java
+ (nativeByteOrder): Let this fail when the corresponding
+ property is not set properly.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * javax/swing/plaf/basic/BasicTreeUI.java
+ (getPathBounds): Consider the tree's insets. Added a bunch of
+ null checks.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * javax/swing/plaf/basic/BasicLabelUI.java
+ (cachedInsets): New field. Used for reusing the insets instance.
+ (getFontMetrics): New helper method for fetching a suitable
+ FontMetrics object.
+ (getPreferredSize): Use new helper method for font metrics.
+ (paint): Only do something if we have an icon or text.
+ Use cached Insets instance and new font metrics helper.
+ (paintDisabledText): Don't restore the graphics' color.
+ (paintEnabledText): Don't restore the graphics' color.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * javax/swing/plaf/metal/MetalButtonUI.java
+ (paintButtonPressed): Fill the whole button not only visibleRect.
+ * javax/swing/plaf/metal/MetalLookAndFeel.java
+ (LAF_defaults): Removed.
+ (getDefaults): Always fetch super's defaults.
+ * javax/swing/plaf/metal/MetalMenuBarUI.java
+ (update): Don't leave 2 pixel gap.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * native/target/.cvsignore,
+ * native/target/Linux/.cvsignore,
+ * native/target/generic/.cvsignore: Some new ignores.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/peer/gtk/GThreadMutex.java,
+ * gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
+ * include/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c,
+ * native/jni/gtk-peer/gthread-jni.c,
+ * native/jni/gtk-peer/gthread-jni.h: Removed.
+ * native/jni/gtk-peer/Makefile.am: Removed obsolete entries
+ for removed files.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ Removed unused bits from gthread-jni.c.
+
+2007-04-03 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (getGlyphs(int[], int[], long[])): Return void.
+
+2007-04-03 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/value/ArrayValue.java: New file.
+
+2007-04-03 Roman Kennke <roman@kennke.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (global_lock): New global variable that holds the object reference
+ to the global GTK lock.
+ (init_glib_threads): Add lock argument. Use
+ gdk_threads_set_lock_functions to replace GTK's locking function
+ with two callbacks that allow reentrant locking, based on
+ JNI's MonitorEnter() and MonitorExit().
+ (jni_lock_cb): New callback function for GTK locking.
+ (jni_unlock_cb): New callback function for GTK unlocking.
+ (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Add lock argument.
+ Call init_glib_threads() with lock object.
+ * include/gnu_java_awt_peer_gtk_GtkToolkit.h
+ Regenerated.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java
+ (GTK_LOCK): New static field. This is used as the global lock for
+ GTK.
+ (gtkInit): Add lock parameter.
+ (static_init): Initialize global lock and call gtkInit() with
+ that lock.
+
+2007-04-02 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (fontSet): Initialize to null.
+ (FreetypeGlyphVector(Font, int[], FontRenderContext)): Populate fontSet
+ array with default font if needed.
+ (FreetypeGlyphVector(FreetypeGlyphVector)): Clone all fields.
+ (getNativeFontPointer): New native method.
+ * include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: Regenerated.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getNativeFontPointer):
+ New function.
+
+2007-04-02 Francis Kung <fkung@redhat.com>
+
+ * INSTALL: Document known bug in at-spi, atk, and gail packages prior to
+ version 1.18.0.
+
+2007-04-02 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (cairoDrawGlyphVector): Added parameter.
+ (drawGlyphVector): Retrieve and pass fontset parameter.
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java
+ (cairoDrawGlyphVector): Added parameter.
+ (lock): Removed unnecessary cast.
+ (unlock): Removed unnecessary cast and explicitly set to ONE variable.
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (fontSet): New field.
+ (dispose): New native method.
+ (finalize): New method.
+ (getGlyphFonts): New method.
+ (getGlyphOutline): Pass fontSet parameter to native method.
+ (getGlyphOutlineNative): Added parameter.
+ (getGlyphs): Pass extra parameters to native method.
+ (getGlyphsNative): Added parameters.
+ (getKerning): Added fontSet parameter.
+ (getMetricsNative): Added fontSet parameter.
+ (performDefaultLayout): Only check kerning if glyphs use the same font.
+ (setupGlyphMetrics): Pass extra parameters to native methods.
+ * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,
+ * include/gnu_java_awt_peer_gtk_FreetypGlyphVector.h: Regenerated.
+ * native/jni/gtk-peer/gdkfont.h: Enable pango engine.
+ (peerfont): Add variable for fontset.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector): Accept
+ array of font pointers to use when drawing glyphs.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+ (getFontSet): New function.
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_dispose): New function.
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphOutlineNative):
+ Added and use new fontSet parameter.
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Use pango
+ to retrieve glyphs and estimate font, if the current font does not contain
+ a requested glyph.
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning): Added and use
+ new fontSet parameter.
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative): Added
+ and use new fontSet parameter.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_dispose): Free fontset.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Load fontset.
+
+2007-04-02 Andrew Haley <aph@redhat.com>
+
+ * javax/management/ObjectName.java: Handle 0-length names.
+ * javax/management/MBeanServerFactory.java: Use the domain that
+ we've been passed, not the fixed string "DefaultDomain".
+
+2007-04-01 Mark Wielaard <mark@klomp.org>
+
+ * org/omg/CORBA/DynAny.java: Mark as deprecated.
+ * org/omg/CORBA/DynArray.java: Likewise.
+ * org/omg/CORBA/DynEnum.java: Likewise.
+ * org/omg/CORBA/DynFixed.java: Likewise.
+ * org/omg/CORBA/DynSequence.java: Likewise.
+ * org/omg/CORBA/DynStruct.java: Likewise.
+ * org/omg/CORBA/DynUnion.java: Likewise.
+ * org/omg/CORBA/DynValue.java: Likewise.
+ * org/omg/CORBA/ORB.java (create_basic_dyn_any): Likewise.
+ (create_dyn_any): Likewise.
+ (create_dyn_array): likewise.
+ (create_dyn_enum): Likewise.
+ (create_dyn_sequence): Likewise.
+ (create_dyn_struct): Likewise.
+ (create_dyn_union): Likewise.
+
+2007-04-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/javax/management/Translator.java:
+ (fromJava(Object[],Method)): Use the array from the
+ parameter not the newly created one...
+ (fromJava(Object, Type)): Support MXBeans.
+ * javax/management/JMX.java:
+ (newMXBeanProxy(MBeanServerConnection,ObjectName,Class)):
+ Call newMXBeanProxy rather than newMBeanProxy.
+ * javax/management/StandardMBean.java:
+ (setAttribute(Attribute)): Use InvocationTargetException
+ as cause.
+
+2007-03-31 Jeroen Frijters <jeroen@frijters.net>
+
+ PR classpath/31402:
+ * java/util/concurrent/CopyOnWriteArrayList.java
+ (remove): Fixed ArrayIndexOutOfBoundsException when index == 0.
+
+2007-03-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/openmbean/CompositeDataInvocationHandler.java:
+ New file.
+
+2007-03-30 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/util/VariableTable.java: Make argCnt and slots ints.
+ (write): Replace writeLong with writeInt for above.
+
+2007-03-30 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/29869:
+ * gnu/java/util/jar/JarUtils.java (log): Commented out.
+ (readSFManifest): Don't log.
+
+2007-03-29 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/29869:
+ * java/util/logging/LogManager.java (readConfiguration): Handle
+ comma-separated 'handlers'. Don't try to add a non-existing
+ handler.
+
+2007-03-29 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/event/ThreadStartEvent.java (Event):
+ Event type is "THREAD_START" not "THERAD_END".
+
+ * gnu/classpath/jdwp/transport/SocketTransport.java (ITransport):
+ Handle configure strings ":port" and "port".
+
+2007-03-29 Francis Kung <fkung@redhat.com>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Revert last patch.
+
+2007-03-29 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/java-nio/Makefile.am (LIBADD): Add libclasspathnative.
+
+2007-03-28 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/StandardMBean.java:
+ (setAttribute(Attribute)): Add handling of primitive
+ types and subtype parameters.
+ (getMutator(String,Class<?>)): New helper method to
+ return the mutator.
+
+2007-03-28 Roman Kennke <roman@kennke.org>
+
+ * java/io/OutputStreamWriter.java,
+ * java/io/InputStreamReader.java: Revert big stream patch due to
+ problems.
+
+2007-03-28 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/31303:
+ * external/sax/org/xml/sax/helpers/XMLReaderFactory.java
+ (createXMLReader): Code in Classpath default.
+
+2007-03-28 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/31276:
+ * native/jni/java-lang/java_lang_VMDouble.c
+ (parseDoubleFromChars): Use %p, not %i.
+
+2007-03-28 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/java-nio/Makefile.am (LIBADD): Don't add
+ libclasspathnative.
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_open): Don't set and reset umask.
+
+2007-03-27 Francis Kung <fkung@redhat.com>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit): Prevent loading of
+ accessibility modules as temporary workaround for Gnome bug.
+
+2007-03-27 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpth/jdwp/processor/ThreadReferenceCommandSet.java
+ (executeResume): Change to call VMVirtualMachine.resumeThread.
+
+2007-03-27 Roman Kennke <roman@kennke.org>
+
+ * java/io/InputStreamReader.java
+ (BUFFER_SIZE): New constant.
+ (bytesCache): Removed.
+ (cacheLock): Removed.
+ (hasSavedSurrogate): Removed.
+ (lastArray): New field. Used for caching CharBuffers.
+ (lastBuffer): New field. Used for caching CharBuffers.
+ (maxBytesPerChar): Removed.
+ (oneChar): New field. Caches a char array for read().
+ (savedSurrogate): New field.
+ (InputStreamReader): (all constructors) Cleaned up.
+ Use initDecoderAndBuffer() method. Check for null parameters.
+ Use new EncodingHelper.getDefaultCharset() for fetching the
+ default charset.
+ (decode): New helper method. Decodes using the NIO decoder or
+ using a raw Latin1 decoding.
+ (getCharBuffer): New helper method. Implements caching of
+ CharBuffers for output arrays.
+ (initDecoderAndBuffer): New helper method. Initializes the decoder
+ and input buffer.
+ (read): Use cached array.
+ (read(char[],int,int)): Reworked using a cleaner NIO based
+ implementation. This decodes the incoming data in bigger chunks
+ rather then calling the decoder for each character.
+ (ready): Also check the input buffer.
+ (refillInputBuffer): New helper methods. Refills the input buffer
+ when it runs out of data.
+ * java/io/OutputStreamWriter.java
+ (lastArray): Implements caching of the output array buffer.
+ (lastBuffer): Implements caching of the output array buffer.
+ (oneChar): New field. Caches a char array for write().
+ (outputBuffer): Make this a ByteBuffer.
+ (OutputStreamWriter): (all constructors) Cleaned up.
+ Use initEncoderAndBuffer() method. Check for null parameters.
+ Use new EncodingHelper.getDefaultCharset() for fetching the
+ default charset.
+ (encode): New helper method. Encodes the input buffer to the output
+ buffer using either the NIO encoder or a raw Latin1 encoding.
+ (encodeChars): New helper method. The encoding loop.
+ (flush): Directly use the array of the output buffer.
+ (getCharBuffer): New helper method. Implements caching of the
+ output buffer.
+ (initEncoderAndBuffer): New helper method for initialization.
+ (write(char[],int,int)): Reworked to make better use of the NIO
+ encoders.
+ (write): Use cached array.
+ (write(String,int,int)): Don't copy the string but rather wrap it
+ and handle it the same as the wrapped char array.
+ (writeConvert): Removed.
+ * gnu/java/nio/charset/EncodingHelper.java
+ (getDefaultCharset): New method. Returns the default charset for
+ the case when the file.encoding charset is not valid. This
+ always returns an UTF8 codec.
+
+2007-03-27 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/Frame.java
+ (weakFrames): Make this generic and package private.
+ (noteFrame): Use generic WeakReference.
+ * java/awt/EventQueue.java
+ (isShutdown): Iterate over the weakFrames directly, rather than
+ using Frame.getFrames(). The latter iterates several times over
+ weakFrames completely and creates a new array on each call. The
+ former iterates only once and aborts when it finds a frame which
+ is displayable.
+
+2007-03-27 Roman Kennke <kennke@aicas.com>
+
+ * javax/swing/JScrollBar.java
+ (getUnitIncrement(int)): Don't multiply direction parameter.
+ (getBlockIncrement(int)): Don't multiply direction parameter.
+
+2007-03-26 Tom Tromey <tromey@redhat.com>
+
+ * doc/cp-tools.texinfo (gcjh Tool): Added more text.
+ (rmid Tool): Likewise.
+
+2007-03-26 Stepan Kasal <skasal@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/Main.java (cniOrJniSeen): New
+ field.
+ (getParser): Use new field.
+
+2007-03-25 Dalibor Topic <robilad@kaffe.org>
+
+ * doc/cp-tools.texinfo: Fix node ordering.
+
+2007-03-19 Matthias Klose <doko@ubuntu.com>
+
+ * doc/Makefile.am: Build a gcjh(1) man page.
+ * doc/cp-tools.texinfo: Add documentation for gcjh.
+
+2007-03-23 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/net/ServerSocket.java (implAccept): set implCreated flag on
+ socket.
+ * java/net/Socket.java (implCreated): Make package accessible for
+ ServerSocket.
+
+2007-03-22 Casey Marshall <csm@gnu.org>
+
+ * gnu/javax/net/ssl/provider/ClientHandshake.java (RSAGen.implRun):
+ check keyEncipherment bit of the certificate, and just pass the public
+ key to the cipher.
+
+2007-03-20 Mario Torre <neugens@limasoftware.net>
+
+ * configure.ac: GConf requirement for building the java.util.prefs backend
+ are relaxed down to version 2.6.0 (instead of 2.11.2).
+
+2007-03-19 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/java/awt/peer/KDEDesktopPeer.java:
+ (mail): Fixed error dialog in KDE when the mail method is called without
+ argument; now opens the default mailer with a blank window.
+ (getCommand): Handle the use of kprinter as default print command for KDE.
+ (supportCommand): Enable the print command when a KDE desktop is detected.
+
+2007-03-19 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/net/Socket.java
+ (implCreated): New field.
+ (getImpl): Call impl.create() if it hasn't been called yet.
+ (bind): Removed explicit impl.create() call.
+
+2007-03-18 Mark Wielaard <mark@klomp.org>
+
+ * javax/crypto/CipherOutputStream.java (write): Use out.write()
+ not super.write().
+
+2007-03-18 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac (COMPILE_PLUGIN): Check for gtk+-2.0 >= 2.8
+ gthread-2.0 >= 2.2 and gdk-pixbuf-2.0
+
+2007-03-16 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/Main.java (run): Use class'
+ name in File case.
+
+2007-03-16 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * resource/com/sun/tools/javac/messages.properties
+ (Main.FailedToRead, Main.MalformedURL, Main.FailedToLoad): Clarify
+ messages for when --with-ecj-jar is not specified.
+
+ * configure.ac (FOUND_ECJ_JAR): Remove conditional.
+ * tools/Makefile.am: Build com.sun.tools.javac package
+ unconditionally.
+
+2007-03-16 Mark Wielaard <mark@klomp.org>
+
+ * configure.ac (COMPILE_PLUGIN): Stop when no plugin headers found.
+ Also check for gtk+ dependency.
+
+2007-03-16 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/JniStubPrinter.java
+ (printClass): Added filename argument.
+ * tools/gnu/classpath/tools/javah/JniIncludePrinter.java
+ (printClass): Added filename argument.
+ * tools/gnu/classpath/tools/javah/CniIncludePrinter.java
+ (printClass): Use user's file name.
+ * tools/gnu/classpath/tools/javah/CniStubPrinter.java
+ (printClass): Use user's file name.
+ * tools/gnu/classpath/tools/javah/Printer.java (printClass): Added
+ filename argument.
+ * tools/gnu/classpath/tools/javah/Main.java (getParser): Fix '-v'
+ argument order.
+ (writeHeaders): Use a HashMap.
+ (run): Put class name into HashMap for writeHeaders.
+
+2007-03-16 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (cairoArc): Make protected rather than private so it can be over-ridden.
+ (cairoClip): Likewise.
+ (cairoClosePath): Likewise.
+ (cairoCurveTo): Likewise.
+ (cairoDrawGlyphVector): Likewise.
+ (cairoFill): Likewise.
+ (cairoLineTo): Likewise.
+ (cairoMoveTo): Likewise.
+ (cairoNewPath): Likewise.
+ (cairoRectangle): Likewise.
+ (cairoResetClip): Likewise.
+ (cairoRestore): Likewise.
+ (cairoSave): Likewise.
+ (cairoScale): Likewise.
+ (cairoSetAntialias): Likewise.
+ (cairoSetDash): Likewise.
+ (cairoSetFillRule): Likewise.
+ (cairoSetFont): Likewise.
+ (cairoSetLine): Likewise.
+ (cairoSetMatrix): Likewise.
+ (cairoSetOperator): Likewise.
+ (cairoSetRGBAColor): Likewise.
+ (cairoStroke): Likewise.
+ (drawPixels): Likewise.
+ (init): Likewise.
+ (setGradient): Likewise.
+ (setPaintPixels): Likewise.
+ (cairoDrawLine): Removed.
+ (cairoDrawRect): Removed.
+ (cairoFillRect): Removed.
+ (cairoPreserveClip): Removed.
+ (cairoRelCurveTo): Removed.
+ (cairoRelLineTo): Removed.
+ (cairoRelMoveTo): Removed.
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java
+ (cairoArc): New method wrapping superclass method in locks.
+ (cairoClip): Likewise.
+ (cairoClosePath): Likewise.
+ (cairoCurveTo): Likewise.
+ (cairoDrawGlyphVector): Likewise.
+ (cairoFill): Likewise.
+ (cairoLineTo): Likewise.
+ (cairoMoveTo): Likewise.
+ (cairoNewPath): Likewise.
+ (cairoRectangle): Likewise.
+ (cairoResetClip): Likewise.
+ (cairoRestore): Likewise.
+ (cairoSave): Likewise.
+ (cairoScale): Likewise.
+ (cairoSetAntialias): Likewise.
+ (cairoSetDash): Likewise.
+ (cairoSetFillRule): Likewise.
+ (cairoSetFont): Likewise.
+ (cairoSetLine): Likewise.
+ (cairoSetMatrix): Likewise.
+ (cairoSetOperator): Likewise.
+ (cairoSetRGBAColor): Likewise.
+ (cairoStroke): Likewise.
+ (disposeNative): Likewise.
+ (drawPixels): Likewise.
+ (init): Likewise.
+ (setGradient): Likewise.
+ (setPaintPixels): Likewise.
+ (draw): Do not lock, as locking is now done in the wrapped native methods.
+ (drawComposite): Likewise.
+ (drawGlyphVector): Likewise.
+ (drawImage): Likewise.
+ (drawRenderedImage): Likewise.
+ (fill): Likewise.
+ (setClip): Removed.
+ (lock): Added documentation.
+ (unlock): Added documentation.
+ * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: Regenerated.
+ * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawLine): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawRect): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFillRect): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo): Removed.
+
+2007-03-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/openmbean/ArrayType.java:
+ (getArrayClassName(String, int)): Replaced by...
+ (getArrayClassName(OpenType, int, boolean)):
+ Returns appropriate class name for the array.
+ (getDimensions(OpenType, int)): New method.
+ (getPrimitiveType(Class<?>)): Likewise.
+ (getPrimitiveTypeClass(OpenType<?>)): Likewise.
+ (getElementType(OpenType<?>)): Likewise.
+ (getElementTypeName(OpenType<?>)): Likewise.
+ (ArrayType(int, OpenType<?>)): Rewritten
+ to handle ArrayTypes as input.
+ (ArrayType(SimpleType<?>, boolean)): New constructor.
+ (equals(Object)): Handle primitiveArray flag.
+ (hashCode()): Likewise.
+ (getArrayType(OpenType<E>)): New method.
+ (getPrimitiveArrayType(Class<T>)): Likewise.
+ (isPrimitiveArray()): Likewise.
+ (toString()): Updated to list primitiveArray
+ flag.
+ * javax/management/openmbean/OpenType.java:
+ (OpenType(String,String,String)): Use Class.forName()
+ and methods of Class to validate arrays.
+ * javax/management/openmbean/SimpleType.java:
+ Include causal exception when creating pre-defined types
+ throws an exception.
+
+2007-03-09 Andreas Tobler <a.tobler@schweiz.org>
+
+ Port change from gcc:
+
+ 2007-03-06 Matthias Klose <doko@ubuntu.com>
+
+ * doc/Makefile.am(gkeytool.pod): Don't use sed -i.
+
+2007-03-09 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/exception/InvalidTagException.java: New file.
+ * gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java
+ (executeGetValues): Use Value type.
+ (exectureSetValues): Ditto.
+ * gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
+ (executeGetValues): Use Value type.
+ (executeSetValues): Ditto.
+ (invokeMethod): Record method return type.
+ * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java
+ (executeGetValues): Use Value type.
+ (executeSetValues): Ditto.
+ * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
+ (executeGetValues): Use Value type.
+ * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
+ (executeGetValues): Use Value type.
+ (executeSetValues): Ditto.
+ * gnu/classpath/jdwp/util/MethodResult.java: Add resType to store return
+ type.
+ (getResultType): New Method.
+ (setResultType): Ditto.
+ * gnu/classpath/jdwp/util/Value.java: Remove.
+ * gnu/classpath/jdwp/value: New Package.
+ * gnu/classpath/jdwp/value/Value.java: New file.
+ * gnu/classpath/jdwp/value/BooleanValue.java: New file.
+ * gnu/classpath/jdwp/value/ByteValue.java: New file.
+ * gnu/classpath/jdwp/value/CharValue.java: New file.
+ * gnu/classpath/jdwp/value/DoubleValue.java: New file.
+ * gnu/classpath/jdwp/value/FloatValue.java: New file.
+ * gnu/classpath/jdwp/value/IntValue.java: New file.
+ * gnu/classpath/jdwp/value/LongValue.java: New file.
+ * gnu/classpath/jdwp/value/ObjectValue.java: New file.
+ * gnu/classpath/jdwp/value/ShortValue.java: New file.
+ * gnu/classpath/jdwp/value/StringValue.java: New file.
+ * gnu/classpath/jdwp/value/ValueFactory.java: New file.
+ * gnu/classpath/jdwp/value/VoidValue.java: New file.
+
+2007-03-09 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/image/SinglePixelPackageSampleModel.java
+ (createDataBuffer): Avoid use of Buffers class and create
+ DataBuffer directly in place.
+
+2007-03-09 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/image/ComponentSampleModel.java
+ (tightPixelPacking): Removed.
+ (ComponentSampleModel): Removed unnecessary 'optimization' code.
+ (createDataBuffer): Avoid use of Buffers helper class.
+ (getDataElements(int,int,int,int,Object,DataBuffer): Removed.
+ (getDataElements(int,int,Object,DataBuffer): Do not use Buffers
+ helper class and instead fetch the values directly. Don't expect
+ any specific DataBuffer subclass.
+ (setDataElements(int,int,int,int,Object,DataBuffer): Removed.
+ (setDataElements(int,int,Object,DataBuffer): Do not use Buffers
+ helper class and instead set the values directly. Don't expect
+ any specific DataBuffer subclass.
+
+2007-03-08 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/31093:
+ * java/net/MulticastSocket.java (setTimeToLive): Allow ttl==0.
+
+2007-03-08 Gary Benson <gbenson@redhat.com>
+
+ PR classpath/30983:
+ * gnu/xml/dom/ls/DomLSParser.java (getInputSource):
+ Do not use the entity resolver to resolve the top-level document.
+
+2007-03-07 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/31057:
+ * java/util/regex/Pattern.java (toString): New method.
+
+2007-03-07 Gary Benson <gbenson@redhat.com>
+
+ PR classpath/30906:
+ * resource/META-INF/services/org.w3c.dom.DOMImplementationSourceList:
+ New file.
+
+2007-03-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/java/lang/management/BeanImpl.java:
+ (translate(String)): Add horrible generics hacks
+ to make things work with the new type signatures.
+ * javax/management/loading/ClassLoaderRepository.java:
+ Added generic types.
+ * javax/management/openmbean/CompositeDataSupport.java:
+ Likewise.
+ * javax/management/openmbean/OpenMBeanOperationInfo.java:
+ Likewise.
+ * javax/management/openmbean/OpenMBeanParameterInfo.java:
+ Likewise.
+
+2007-03-06 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (getGlyphOutline): Apply glyph position translation.
+ (getOutline): Do not apply glyph position translation.
+
+2007-03-06 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/Main.java (getName): New
+ method.
+ (getParser): Now protected. Use getName. Add '-v' alias for
+ --verbose.
+ (postParse): New method.
+ (run): Now protected. Use postParse.
+ * tools/gnu/classpath/tools/javah/GcjhMain.java: New file.
+
+2007-03-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/javax/management/Translator.java:
+ (translate(String)): Use a Boolean array to
+ comply with the new typing.
+ * javax/management/openmbean/ArrayType.java:
+ Added generic types and updated copyright headers.
+ * javax/management/openmbean/CompositeData.java:
+ Likewise.
+ * javax/management/openmbean/CompositeDataSupport.java:
+ Likewise.
+ * javax/management/openmbean/CompositeType.java:
+ Likewise.
+ * javax/management/openmbean/OpenMBeanAttributeInfoSupport.java:
+ Likewise.
+ * javax/management/openmbean/OpenMBeanOperationInfoSupport.java:
+ Likewise.
+ * javax/management/openmbean/OpenMBeanParameterInfoSupport.java:
+ Likewise.
+ * javax/management/openmbean/OpenType.java:
+ Updated copyright header.
+ * javax/management/openmbean/SimpleType.java:
+ Added generic types and updated copyright headers.
+ * javax/management/openmbean/TabularData.java:
+ Likewise.
+ * javax/management/openmbean/TabularDataSupport.java:
+ Likewise.
+ * javax/management/openmbean/TabularType.java:
+ Likewise.
+
+2007-03-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/java/lang/management/BeanImpl.java:
+ Reference the new Translator class.
+ (translate(String)): Moved to Translator.
+ * gnu/javax/management/Translator.java:
+ New file.
+ * javax/management/JMX.java:
+ Likewise.
+ * javax/management/MBeanServerInvocationHandler.java:
+ Likewise.
+ * javax/management/MXBean.java:
+ Likewise.
+ * javax/management/ObjectName.java:
+ (ObjectName(String)): Catch a key without a value.
+ * javax/management/StandardMBean.java:
+ (StandardMBean(Class<?>)): Handle MXBeans.
+ (StandardMBean(Object, Class<?>)): Likewise.
+ (invoke(String,Object[],String[])): Disallow
+ calling attribute methods and handle null signatures.
+ (setAttribute(Attribute)): Search for mutators
+ with the appropriate signature.
+ * javax/management/openmbean/OpenType.java:
+ Add generic typing.
+ (ALLOWED_CLASSNAMES_LIST): New field.
+
+2007-03-02 Mario Torre <neugens@limasoftware.net>
+
+ PR classpath/31017:
+ committed for Petteri Räty <betelgeuse@gentoo.org>
+ * configure.ac: fix broken build for gcj browser plugin
+
+2007-03-02 Mario Torre <neugens@limasoftware.net>
+
+ * java/awt/Desktop.java: new java 1.6 class.
+ * java/awt/peer/DesktopPeer.java: new inteface.
+ * gnu/java/awt/peer/GnomeDesktopPeer.java: new class.
+ * gnu/java/awt/peer/ClasspathDesktopPeer.java: new class.
+ * gnu/java/awt/peer/KDEDesktopPeer.java: new class.
+ * java/awt/Toolkit.java (createDesktopPeer): new method to support the
+ creation of DesktopPeer instances.
+ * gnu/java/awt/peer/qt/QtToolkit.java: update copyright notice and
+ organize import.
+ * gnu/java/awt/ClasspathToolkit.java (createDesktopPeer): new method.
+
+2007-02-28 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/processor/EventRequestCommandSet.java
+ (executeSet): Check if VM has capability for field access
+ or modification events.
+ * gnu/classpath/jdwp/processor/MethodCommandSet.java
+ (executeByteCodes): Check if VM has capability and
+ implement.
+ * gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java
+ (executeMonitorInfo): Likewise.
+ * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
+ (executeSourceDebugExtension): Likewise.
+ * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
+ (executePopFrames): Likewise.
+ * gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java
+ (executeOwnedMonitors): Likewise.
+ (executeCurrentContendedMonitor): Likewise.
+ * gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java
+ (executeCapabilities): Rewrite using new VMVirtualMachine
+ capabilities.
+ (executeRedefineClasses): Check if VM has capability and
+ implement.
+ (executeSetDefaultStratum): Likewise.
+ * gnu/classpath/jdwp/util/MonitorInfo.java; New file.
+ * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
+ (canWatchFieldModification): New class constant.
+ (canWatchFieldAccess): Likewise.
+ (canGetBytecodes): Likewise.
+ (canGetSyntheticAttribute): Likewise.
+ (canGetOwnedMonitorInfo): Likewise.
+ (canGetCurrentContendedMonitor): Likewise.
+ (canGetMonitorInfo): Likewise.
+ (canRedefineClasses): Likewise.
+ (canAddMethod): Likewise.
+ (canUnrestrictedlyRedefineClasses): Likewise.
+ (canPopFrames): Likewise.
+ (canUseInstanceFilters): Likewise.
+ (canGetSourceDebugExtension): Likewise.
+ (canRequestVMDeathEvent): Likewise.
+ (canSetDefaultStratum): Likewise.
+ (redefineClasses): New method.
+ (setDefaultStratum): Likewise.
+ (getSourceDebugExtension): Likewise.
+ (getBytecodes): Likewise.
+ (getMonitorInfo): Likewise.
+ (getOwnedMonitors): Likewise.
+ (getCurrentContendedMonitor): Likewise.
+ (popFrames): Likewise.
+
+2007-03-01 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/Canvas.java
+ (graphicsConfiguration): Removed duplicate (from Component) field.
+ (Canvas(GraphicsConfiguration)): Set the Component's graphicsConfig
+ field.
+ (getGraphicsConfigurationImpl): Removed.
+ * java/awt/Component.java
+ (getGraphicsConfiguration): Moved implementation here. Synchronize
+ on tree lock to prevent threading nastiness. Don't query peer
+ and instead return the setting of the graphicsConfig field.
+ (getGraphicsConfigurationImpl): Removed.
+ * java/awt/Window.java
+ (graphicsConfiguration): Removed duplicate (from Component) field.
+ (Window): Set the Component's graphicsConfig field.
+ (Window(GraphicsConfiguration)): Set the Component's graphicsConfig
+ field.
+ (Window(Window,GraphicsConfiguration)): Set the Component's
+ graphicsConfig field.
+ (getGraphicsConfigurationImpl): Removed.
+ (getGraphicsConfiguration): Fetch the local graphics env here
+ if not already done and return that.
+
+2007-02-28 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * INSTALL: Document --with-ecj-jar configure option and ecj jar
+ requirement for com.sun.tools.javac support.
+ * configure.ac: Add --with-ecj-jar configure option.
+ * gnu/classpath/Configuration.java.in (ECJ_JAR): New field.
+ * tools/Makefile.am: Build decendents of com and sun directories.
+ * resource/com/sun/tools/javac/messages.properties,
+ resource/sun/rmi/rmic/messages.properties,
+ tools/com/sun/javadoc/ClassDoc.java,
+ tools/com/sun/javadoc/ConstructorDoc.java,
+ tools/com/sun/javadoc/Doc.java,
+ tools/com/sun/javadoc/DocErrorReporter.java,
+ tools/com/sun/javadoc/Doclet.java,
+ tools/com/sun/javadoc/ExecutableMemberDoc.java,
+ tools/com/sun/javadoc/FieldDoc.java,
+ tools/com/sun/javadoc/MemberDoc.java,
+ tools/com/sun/javadoc/MethodDoc.java,
+ tools/com/sun/javadoc/PackageDoc.java,
+ tools/com/sun/javadoc/ParamTag.java,
+ tools/com/sun/javadoc/Parameter.java,
+ tools/com/sun/javadoc/ProgramElementDoc.java,
+ tools/com/sun/javadoc/RootDoc.java,
+ tools/com/sun/javadoc/SeeTag.java,
+ tools/com/sun/javadoc/SerialFieldTag.java,
+ tools/com/sun/javadoc/SourcePosition.java,
+ tools/com/sun/javadoc/Tag.java,
+ tools/com/sun/javadoc/ThrowsTag.java,
+ tools/com/sun/javadoc/Type.java,
+ tools/com/sun/javadoc/TypeVariable.java,
+ tools/com/sun/tools/doclets/Taglet.java,
+ tools/com/sun/tools/javac/Main.java,
+ tools/com/sun/tools/javac/Messages.java,
+ tools/sun/rmi/rmic/Main.java, tools/sun/rmi/rmic/Messages.java:
+ New files.
+
+2007-02-28 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/processor/MethodCommandSet.java
+ (executeLineTable): Use ReferenceTypeId instead of
+ ClassReferenceTypeId.
+ (executeVariableTable): Likewise.
+ (executeVariableTableWithGeneric): Fix error message.
+ * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
+ (executeSignatureWithGeneric): Fix error message.
+ (executeFieldWithGeneric): Likewise.
+ (executeMethodsWithGeneric): Likewise.
+ * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
+ (executeGetValues): Use ThreadId instead of ObjectId.
+ (executeSetValues): Likewise.
+ (executeThisObject): Likewise.
+
+2007-02-28 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/id/NullObjectId.java: New class.
+ * gnu/classpath/jdwp/util/NullObject.java: New class.
+ * vm/reference/gnu/classpath/jdwp/VMIdManager.java
+ (getObjectId): Handle null object.
+ (get): Handle objectId of 0.
+
+2007-02-26 Francis Kung <fkung@redhat.com>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Stop using deprecated
+ function for creating new font map.
+
+2007-02-26 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawCairoSurface): Do not reset clip.
+ (drawImage(Image,AffineTransform,Color,ImageObserver)): Likewise.
+
+2007-02-23 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawCairoSurface): New method.
+ (drawImage(Image,AffineTransform,Color,ImageObserver)): Use new
+ drawCairoSurface() method.
+ * gnu/java/awt/peer/gtk/CairoSurface.java
+ (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): Copy correct
+ width/height values, and copy sharedBuffer value.
+ (createWritableChild): Remove debug line.
+ (drawSurface): Removed method.
+ * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
+ (drawComposite): Translate image when drawing.
+
+2007-02-23 Gary Benson <gbenson@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR libgcj/17002
+ PR classpath/28550
+ * java/util/Date.java (parse): Properly parse 09:01:02 as
+ hours/minutes/seconds, not as hours/minutes/year.
+ * java/util/SimpleTimeZone.java (SimpleTimeZone): Simplify
+ {start,end}TimeMode constructor by calling shorter constructor,
+ set {start,end}TimeMode fields after it returns.
+ (setStartRule): Don't adjust startTime into WALL_TIME. Set
+ startTimeMode to WALL_TIME.
+ (endStartRule): Similarly.
+ (getOffset): Handle properly millis + dstOffset overflowing into the
+ next day. Adjust startTime resp. endTime based on startTimeMode
+ resp. endTimeMode.
+ * java/util/TimeZone.java (zoneinfo_dir, availableIDs, aliases0): New
+ static fields.
+ (timezones): Remove synchronized keyword. Set zoneinfo_dir.
+ If non-null, set up aliases0 and don't put anything into
+ timezones0.
+ (defaultZone): Call getTimeZone instead of timezones().get.
+ (getDefaultTimeZone): Fix parsing of EST5 or EST5EDT6. Use
+ getTimeZoneInternal instead of timezones().get.
+ (parseTime): Parse correctly hour:minute.
+ (getTimeZoneInternal): New private method.
+ (getTimeZone): Do the custom ID checking first, canonicalize
+ ID for custom IDs as required by documentation. Call
+ getTimeZoneInternal to handle the rest.
+ (getAvailableIDs(int)): Add locking. Handle zoneinfo_dir != null.
+ (getAvailableIDs(File,String,ArrayList)): New private method.
+ (getAvailableIDs()): Add locking. Handle zoneinfo_dir != null.
+ * vm/reference/java/util/VMTimeZone.java (getDefaultTimeZoneId):
+ To read /etc/localtime, use ZoneInfo.readTZFile instead of
+ VMTimeZone.readtzFile. Get better timezone name for
+ /etc/localtime, either if it is a symlink or through
+ /etc/sysconfig/clock.
+ (readSysconfigClockFile): New static method.
+ (readtzFile): Removed.
+ * gnu/java/util/ZoneInfo.java: New file.
+ * java/lang/System.java: Add gnu.java.util.zoneinfo.dir to comments.
+ * NEWS: Documented TimeZone interface changes.
+
+2007-02-23 Francis Kung <fkung@redhat.com>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Remove debug line.
+
+2007-02-22 Keith Seitz <keiths@redhat.ecom>
+
+ * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
+ (getAllLoadedClassesCount): Remove.
+ (getAllLoadedClasses): Return a Collection.
+ * gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java
+ (executeClassesBySignature): VMVirtualMachine.getAllLoadedClasses
+ now returns Collection.
+ (executeAllClasses): Likewise.
+ Get size of return from Colleciton instead of calling
+ getAllLoadedClassesCount.
+
+2007-02-22 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
+ (executeGetValues): Pass a signature byte to VMFrame.getValue.
+ * vm/reference/gnu/classpath/jdwp/VMFrame.java (getValue): Add
+ signature parameter.
+
+2007-02-22 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoSurface.java
+ (copyAreaNative): Pass surface pointer into copyAreaNative2().
+ (copyAreaNative2): Add parameter for surface pointer.
+ (getFlippedBuffer): Add parameter for surface pointer.
+ (getGtkImage): Pass surface pointer into getFlippedBuffer().
+
+2007-02-21 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/BufferedImageGraphcs.java
+ (constructor): Add pre-multiplied colour model to types available for
+ optimization.
+ (updateBufferedImage): Change surface.getPixels() call to surface.getData().
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawImage): Add checks before using CairoSurface optimization.
+ * gnu/java/awt/peer/gtk/CairoSurface.java
+ (bufferPointer): Removed field.
+ (sharedBuffer): New field.
+ (CairoSurface(GtkImage)): Copy array rather than using setPixels() call.
+ (CairoSurface(int,int,int)): Use getData() convenience method.
+ (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): Remove reference
+ to deleted bufferPointer field.
+ (copyAreaNative): Update documentation, remove reference to bufferPointer.
+ (copyAreaNative2): Remove reference to deleted bufferPointer field.
+ (destroy): Remove reference to deleted bufferPointer field.
+ (dispose): Updated to reflect new method signature for destroy().
+ (drawSurface): Added documentation.
+ (getData): New convience method.
+ (getFlippedBuffer): Removed method parameters.
+ (getGtkImage): Updated to reflect new method signature.
+ (getPixels): Removed method.
+ (nativeGetElem): Removed method.
+ (netiveGetPixels): Removed method.
+ (nativeSetElem): Removed method.
+ (nativeSetPixels): Removed method.
+ (setPixels): Removed method.
+ (syncJavaToNative): New method.
+ (syncNativeToJava): New method.
+ * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
+ (draw): Sync buffers if necessary.
+ (drawGlyphVector): Likewise.
+ (drawImage): Likewise.
+ (drawRenderedImage): Likewise,
+ (fill): Likewise.
+ * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative2): Use pointer to
+ surface rather than pointer to buffer.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Provide fall-back for
+ copied arrays.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_destroy): Handle copied arrays.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer): Retrieve
+ information on size using JNI calls.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_getElem): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_setElem): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels): Removed.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_syncJavaToNative): New function.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_syncNativeToJava): New function.
+ (BUFFER): Removed constant.
+ (SHARED): New constant.
+
+2007-02-20 Gary Benson <gbenson@redhat.com>
+
+ * javax/management/ObjectName.java
+ (domainMatches): New method.
+ (apply): Rearranged to use the above.
+
+2007-02-19 Mark Wielaard <mark@klomp.org>
+
+ * doc/.cvsignore: Add *.1.
+ * doc/Makefile.am (CLEANFILES): Add Tools_MANFILES.
+
+2007-02-19 Dalibor Topic <robilad@kaffe.org>
+
+ * cp-hacking.texinfo, cp-tools.texinfo,
+ cp-vmintegration.texinfo: Prefix output file name
+ with cp.
+
+2007-02-19 Gary Benson <gbenson@redhat.com>
+
+ * javax/management/ObjectName.java
+ (properties): Initialize when declared.
+ (ObjectName(String)): Don't initialize properties here.
+ (ObjectName(String, String, String): Likewise.
+
+2007-02-19 Chris Burdess <dog@gnu.org>
+
+ Fixes #30831
+ * gnu/xml/dom/ls/SAXEventSink.java: Only set extended document
+ properties when reader is available.
+
+2007-02-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/MBeanServer.java:
+ (queryMBeans(ObjectName,QueryExp)): Returned
+ generically-typed Set.
+ (queryNames(ObjectName,QueryExp)): Likewise.
+ * javax/management/MBeanServerConnection.java:
+ (queryMBeans(ObjectName,QueryExp)): Returned
+ generically-typed Set.
+ (queryNames(ObjectName,QueryExp)): Likewise.
+ * javax/management/ObjectName.java:
+ Use a generically-typed TreeMap.
+ (ObjectName(String,Hashtable<String,String>):
+ Genericized.
+ (getKeyPropertyList()): Likewise.
+ * javax/management/StandardMBean.java:
+ Use a generically-typed interface class.
+ (StandardMBean(Class<?>)): Genericized.
+ (StandardMBean(T, Class<T>)): Likewise.
+ (getImplementationClass()): Likewise.
+ (getMBeanInterface()): Likewise.
+
+2007-02-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/Descriptor.java:
+ New file.
+ * javax/management/DescriptorRead.java:
+ Likewise.
+ * javax/management/DescriptorAccess.java:
+ Likewise.
+
+2007-02-16 Matthias Klose <doko@ubuntu.com>
+
+ * doc/Makefile.am: Add rules to build and install man pages
+ from texinfo docs.
+ * doc/hacking.texinfo doc/tools.texinfo, doc/vmintegration.texinfo:
+ Rename, prefix files with "cp-".
+ * doc/cp-tools.texinfo: Add markup for man page generation,
+ add documentation for command line options for gjar, gjavah,
+ gnative2ascii, gorbd, grmid, grmiregistry, gserialver, gtnameserv.
+ doc/texi2pod.pl: New, taken from the GCC sources.
+
+2007-02-16 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/ClasspathGraphicsEnvironment.java: New file.
+ * gnu/java/awt/peer/gtk/CairoSurface.java
+ (CairoDataBuffer): Removed inner class.
+ (CairoSurface(int,int,int,int)): New constructor.
+ (CairoSurface(int,int)): Delegate to new constructor.
+ (CairoSurface(SampleModel,CairoSurface,Rectangle,Point)): New constructor
+ for creating child rasters.
+ (create): Added int[] parameter.
+ (createChild): New method.
+ (createCompatibleWritableRaster): New methods.
+ (createTranslatedChild): New method.
+ (createWritableChild): New method.
+ (createWritableTranslatedChild): New method.
+ (destroy): Added int[] parameter.
+ (dispose): Only free native resources if this Surface has no parents.
+ (isCompatibleColorModel): New method.
+ (isCompatibleSampleModel): New method.
+ * gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
+ (draw): Set transform, smarter bounds generation.
+ (drawComposite): Improved clipping.
+ (drawImage): Fixed bounds translation.
+ (drawRenderedImage): Set transform in buffer.
+ (fill): Set transform in buffer.
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+ (createRaster): New method.
+ * java/awt/image/BufferedImage.java
+ (BufferedImage(int,int,int)): Use optimized raster if possible.
+ * include/gnu_java_awt_peer_gtk_CairoSurface.h: Regenerated.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_create): Share data buffer between
+ Cairo and Java.
+ (Java_gnu_java_awt_peer_gtk_CairoSurface_destroy): Free data array.
+
+2007-02-16 Francis Kung <fkung@redhat.com>
+
+ * javax/management/NotificationBroadcasterSupport.java: Update imports.
+
+2007-02-16 Andrew Haley <aph@redhat.com>
+
+ * gnu/java/lang/management/MemoryMXBeanImpl.java,
+ javax/management/MBeanServerDelegate.java: Use
+ gnu.javax.management.ListenerData rather than
+ gnu.classpath.ListenerData.
+ * gnu/javax/management/ListenerData.java: Move here from
+ gnu/classpath/ListenerData.java.
+
+2006-10-14 Edwin Steiner <edwin.steiner@gmx.net>
+
+ PR classpath/28652:
+ * javax/management/MBeanInfo.java (MBeanInfo):
+ Use clone to duplicate the arrays in order to
+ preserve the array type.
+
+2007-02-15 Gary Benson <gbenson@redhat.com>
+
+ * gnu/javax/management/Server.java
+ (registerMBean): Always register objects that implement the
+ MBeanRegistration interface, and check the name returned by
+ preRegister before using it.
+
+2007-02-15 Roman Kennke <kennke@aicas.com>
+
+ * java/nio/ByteOrder.java
+ (nativeOrder): Avoid NPE when comparing a system property.
+
+2007-02-13 Gary Benson <gbenson@redhat.com>
+
+ * javax/management/ObjectName.java
+ (toString): Return this item's canonical name.
+
+2007-02-12 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/ClasspathToolkit.java:
+ * gnu/java/awt/peer/gtk/AsyncImage.java,
+ * gnu/java/awt/peer/gtk/BufferedImageGraphics.java,
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java,
+ * gnu/java/awt/peer/gtk/CairoSurface.java,
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java,
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,
+ * gnu/java/awt/peer/gtk/GdkFontPeer.java,
+ * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
+ * gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
+ * gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
+ * gnu/java/awt/peer/gtk/GtkChoicePeer.java,
+ * gnu/java/awt/peer/gtk/GtkClipboard.java,
+ * gnu/java/awt/peer/gtk/GtkClipboardNotifier.java,
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
+ * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java,
+ * gnu/java/awt/peer/gtk/GtkImage.java,
+ * gnu/java/awt/peer/gtk/GtkImageConsumer.java,
+ * gnu/java/awt/peer/gtk/GtkLabelPeer.java,
+ * gnu/java/awt/peer/gtk/GtkListPeer.java,
+ * gnu/java/awt/peer/gtk/GtkMainThread.java,
+ * gnu/java/awt/peer/gtk/GtkMenuBarPeer.java,
+ * gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java,
+ * gnu/java/awt/peer/gtk/GtkMenuPeer.java,
+ * gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java,
+ * gnu/java/awt/peer/gtk/GtkScrollbarPeer.java,
+ * gnu/java/awt/peer/gtk/GtkScrollPanePeer.java,
+ * gnu/java/awt/peer/gtk/GtkSelection.java,
+ * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java,
+ * gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
+ * gnu/java/awt/peer/gtk/GtkToolkit.java,
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java,
+ * gnu/java/awt/peer/gtk/VolatileImageGraphics.java,
+ * java/awt/RenderingHints.java,
+ * java/awt/image/BufferedImage.java: Reformatted and added generics.
+
+2007-02-12 Tom Tromey <tromey@redhat.com>
+
+ * java/net/Socket.java (bind): Typo fix.
+
+2007-02-12 Tom Tromey <tromey@redhat.com>
+
+ * vm/reference/java/lang/reflect/Method.java (getDefaultValue):
+ New method.
+ * sun/reflect/annotation/AnnotationInvocationHandler.java (create):
+ New method.
+ (arrayClone): New method.
+ (invoke): Clone array return results.
+
+2007-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR 23566
+ * scripts/timezones.pl: Parse each file in 2 passes, in one parse
+ just Rule lines, in the other everything else. Pass 0 instead of
+ $savings as second argument to parseRule when parsing the start
+ rule.
+ * java/util/TimeZone.java (timezones): Regenerate from tzdata2007a.
+
+2007-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ * vm/reference/java/util/VMTimeZone.java: Rewrite to handle both
+ the old 'TZif\0' format and the new one.
+ * java/util/TimeZone.java: Handle default (one hour) daylight
+ savings.
+
+2007-02-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/Query.java:
+ New file.
+ * javax/management/StandardMBean.java:
+ Use the implementation's class loader.
+
+2007-02-10 Mark Wielaard <mark@klomp.org>
+
+ * javax/swing/plaf/metal/MetalFileChooserUI.java: Import Date from
+ java.util, not from java.sql.
+
+2007-02-10 Roman Kennke <kennke@aicas.com>
+
+ * javax/imageio/stream/ImageOutputStreamImpl.java
+ (flushBits): Implemented.
+ (writeBit): Implemented.
+ (writeBits): Implemented.
+
+2007-02-10 Roman Kennke <kennke@aicas.com>
+
+ * javax/swing/TransferHandler.java
+ (SwingDragGestureRecognizer): New inner class.
+ (SwingDragHandler): New inner class.
+ (recognizer): New field.
+ (exportAsDrag): Implemented missing method.
+
+2007-02-10 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/GraphicsConfiguration.java
+ (createCompatibleVolatileImage(int,int,ImageCapabilities): Provide
+ default implementation that delegates to
+ createCompatibleVolatileImage(int,int).
+ (createCompatibleVolatileImage(int,int,ImageCapabilities,int):
+ New method from JDK5 spec. Default implementation by delegating to
+ (createCompatibleVolatileImage(int,int,int).
+
+2007-02-09 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/30647:
+ * configure.ac: Also check for jack/jack.h.
+
+2007-02-09 Mario Torre <neugens@limasoftware.net>
+
+ * java/io/File.java: remove import for
+ gnu.classpath.NotImplementedException.
+ (getUsableSpace): removed stub.
+ (getFreeSpace): likewise.
+ (getTotalSpace): likewise.
+
+2007-02-09 Mario Torre <neugens@limasoftware.net>
+
+ * vm/reference/java/io/VMFile.java:
+ (canExecute): new 1.6 native method.
+ (setReadable): likewise.
+ (setWritable): likewise.
+ (setExecutable): likewise.
+ * java/io/File.java: added import for gnu.classpath.NotImplementedException.
+ (setReadOnly): new 1.6 method.
+ (canExecute): likewise.
+ (setReadable): likewise.
+ (setWritable): likewise.
+ (setExecutable): likewise.
+ (getUsableSpace): added stub for new 1.6 method.
+ (getFreeSpace): likewise.
+ (getTotalSpace): likewise.
+ (checkExec): new private method to support new 1.6 additions.
+ * native/jni/java-io/java_io_VMFile.c:
+ set_file_permissions: new helper function.
+ Java_java_io_VMFile_setReadable: new native method to bakcup 1.6 methods
+ in VMFile.java.
+ Java_java_io_VMFile_setWritable: likewise.
+ Java_java_io_VMFile_setExecutable: likewise.
+ Java_java_io_VMFile_canExecute: likewise.
+ * native/jni/native-lib/cpio.h: added new flags: CPFILE_FLAG_EXEC,
+ CPFILE_FLAG_USR and CPFILE_FLAG_OFF.
+ cpio_chmod: new function declaration.
+ cpio_checkAccess: likewise.
+ * native/jni/native-lib/cpio.c:
+ cpio_chmod: new function definition.
+ cpio_checkAccess: likewise.
+
+2007-02-09 Gary Benson <gbenson@redhat.com>
+
+ * javax/management/ObjectName.java
+ (quote): Initialize StringBuilder correctly.
+
+2007-02-09 Francis Kung <fkung@redhat.com>
+
+ * java/awt/image/BufferedImage: Reformatted.
+
+2007-02-09 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ Fixes bug #30732
+ * gnu/java/util/regex/RETokenChar.java(chain): Check whether the next
+ token has a next token.
+
+2007-02-08 Roman Kennke <kennke@aicas.com>
+
+ PR 30347
+ * javax/swing/JViewport.java
+ (scrollRectToVisible): Use correct X/Y offset for calculations.
+ (paintBackingStore): Update backbuffer when we are not the paint
+ root.
+
+2007-02-08 Roman Kennke <kennke@aicas.com>
+
+ * java/awt/image/SinglePixelPackedSampleModel.java
+ (getDataElements(int,int,Object,DataBuffer)):
+ Replace DataBuffer using method with simple
+ switch. This does not check for the exact type (class) of the
+ DataBuffer but instead checks the transfer type.
+ (getDataElements(int,int,int,intObject,DataBuffer)): Removed.
+ (setDataElements): Fixed indentation.
+ (setPixels): Removed unused statement.
+
+2007-02-07 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/PathOptionGroup.java
+ (PathOptionGroup): Allow '-cp' as well.
+
+2007-02-07 Chris Burdess <dog@gnu.org>
+
+ Fixes PR 30718.
+ * gnu/xml/dom/ls/SAXEventSink.java: Add public accessor/mutators.
+ * gnu/xml/transform/XSLURIResolver.java: Add support for custom
+ SAXSources without a backing URL or stream.
+
+2007-02-06 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/30707:
+ * tools/gnu/classpath/tools/javah/JniIncludePrinter.java
+ (printClass): Always print a header.
+
+2007-02-06 Chris Burdess <dog@gnu.org>
+
+ Fixes PR 27710.
+ * gnu/xml/dom/DomDocumentBuilderFactory.java: Fall back to synchronous
+ LSParser if implementation does not support asynchronous.
+ * gnu/xml/stream/XMLParser.java,
+ gnu/xml/stream/XIncludeFilter.java: Use custom code instead of
+ java.net.URL to resolve to an an absolute URI, to avoid nonexistent
+ protocol handler problems.
+
+2007-02-05 Andrew Haley <aph@redhat.com>
+
+ PR cp-tools/30706
+ * tools/gnu/classpath/tools/javah/JniIncludePrinter.java:
+ (printClass): Replace '/' in filenames with '_'.
+ * tools/gnu/classpath/tools/javah/JniStubPrinter.java
+ (printClass): Likewise.
+
+2007-02-05 Tom Tromey <tromey@redhat.com>
+
+ * java/net/Proxy.java (equals): Handle case where address==null.
+ (hashCode): Likewise.
+ (toString): Likewise.
+
+2007-02-04 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/lang/Class.java
+ (newInstance): Moved setAccessible call to helper method.
+ (getEnumConstants): Call new helper method to allow values method to be
+ called on non-public enum classes.
+ (setAccessible): New helper method.
+ * java/lang/Enum.java
+ (valueOf): Call new helper method in class to allow field value to
+ be read on non-public enum classes.
+
+2007-02-04 Jeroen Frijters <jeroen@frijters.net>
+
+ Fix for #30693
+ * gnu/java/nio/charset/ByteCharset.java
+ (ByteCharset.Decoder.decodeLoop): Reset input buffer position if
+ the byte read was unmappable.
+
+2007-02-02 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/processor/StackFrameCommandSet.java
+ (executeGetValues): Changed getFrame to use a jlong to pass frameID.
+ (executeSetValues): Ditto.
+ (executeThisObject): Ditto.
+ * vm/reference/gnu/classpath/jdwp/VMFrame.java: Added thread field and a
+ constructor used to create VMFrames.
+ (getThread): New method.
+ * vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java(getFrame): Changed
+ to take a long instead of a ByteBuffer to pass the frameID.
+
+2007-02-01 Tom Tromey <tromey@redhat.com>
+
+ * java/util/logging/LogManager.java (reset): Remove bogus
+ 'while'.
+
+2007-01-31 Casey Marshall <csm@gnu.org>
+
+ * gnu/javax/net/ssl/Base64.java: move to `gnu/java/util/Base64.java.'
+ * gnu/javax/net/ssl/PrivateCredentials.java: clean up unused imports.
+ (add): use `gnu.java.util.Base64.'
+ * gnu/java/net/protocol/http/Request.java (authenticate): use
+ `gnu.java.util.Base64.'
+ * tools/gnu/classpath/tools/jarsigner/HashUtils.java (hashStream):
+ likewise.
+ * tools/gnu/classpath/tools/keytool/CertReqCmd.java (start): likewise.
+ * tools/gnu/classpath/tools/keytool/ExportCmd.java (start): likewise.
+ * tools/gnu/classpath/tools/keytool/ListCmd.java (printRFC1421):
+ likewise.
+ * gnu/java/net/Base64.java: removed.
+ * gnu/java/security/util/Base64.java: removed.
+
+2007-01-31 Casey Marshall <csm@gnu.org>
+
+ Fixes PR classpath/24191.
+ Fix suggested by Rafael Teixeira <monoman@gmail.com>.
+ * javax/crypto/CipherOutputStream.java (write): check return value
+ of `update' for null.
+
+2007-01-31 Tom Tromey <tromey@redhat.com>
+
+ * resource/gnu/classpath/tools/jar/messages.properties
+ (Main.Stdin): New message.
+ * tools/gnu/classpath/tools/jar/Main.java (initializeParser): Add
+ '-@' option.
+ (readNames): New method.
+ (run): Use it.
+
+2007-01-30 Roman Kennke <kennke@aicas.com>
+
+ PR 20577
+ * javax/swing/DefaultDesktopManager.java
+ (activateFrame): Added a bunch of null checks. Don't call
+ JInternalFrame.setSelected() to avoid recursion.
+
+2007-01-29 Andrew Haley <aph@redhat.com>
+
+ * java/lang/SecurityManager.java (SecurityManager): Load and
+ initialize java.security.Security.
+
+2007-01-28 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_accept): Throw SocketTimeoutException
+ in case of timeout.
+ * native/jni/java-nio/javanio.c(cpnio_accept): Call select() if
+ SO_RCVTIMEO is set.
+
+2007-01-26 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/FieldHelper.java (print): Print
+ 'volatile' after field type.
+
+2007-01-26 Chris Burdess <dog@gnu.org>
+
+ Fixes #30597
+ * gnu/xml/dom/DomDocumentBuilder.java: Throw IOException where cause
+ of LSException is an IOException.
+ * gnu/xml/dom/ls/DomLSParser.java,
+ gnu/xml/stream/SAXParser.java: Ensure coalescing feature is set
+ correctly during LS parsing.
+
+2007-01-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/PersistentMBean.java:
+ New file.
+
+2007-01-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/AttributeChangeNotificationFilter.java:
+ Correct typo.
+ * javax/management/NotificationFilterSupport.java:
+ New file.
+
+2007-01-21 Mark Wielaard <mark@klomp.org>
+
+ * java/security/SecureClassLoader.java (defineClass): Method returns
+ Class<?>.
+ * java/security/SignatureSpi.java (engineUpdate(ByteBuffer):
+ Does not throw SignatureException. Chain SignatureException inside
+ IllegalStateException.
+
+2007-01-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/NotificationBroadcasterSupport.java:
+ New file.
+
+2007-01-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * java/text/DecimalFormat.java(parse): Corrected the ParsePosition
+ settings.
+
+2007-01-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * java/text/SimpleDateFormat(parse): Corrected the usage of
+ NumberFormat.
+
+2007-01-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ Fixes bug #30488
+ * native/jni/native-lib/cpnet.c(SOCKET_NOSIGNAL): Deleted,
+ (setsockopt_NOSIGPIPE): New function,
+ (cpnet_send): Corrected the option setting to send(),
+ (cpnet_sendTo): Corrected the option setting to sendto().
+
+2007-01-19 Marco Trudel <mtrudel@gmx.ch>
+
+ * java/util/Arrays.java (binarySearch): Change comparison order.
+
+2007-01-17 Keith Seitz <keiths@redhat.com>
+
+ * gnu/classpath/jdwp/events/filters/StepFilter.java:
+ Update javadoc.
+ (matches): Implement.
+
+ * gnu/classpath/jdwp/event/EventManager.java (EventManager): Honor
+ agent startup suspension for VM_INIT.
+
+2007-01-17 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/javah/PathOptionGroup.java
+ (PathOptionGroup): Set default boot class path.
+
+2007-01-17 Mark Wielaard <mark@klomp.org>
+
+ * javax/activity/ActivityCompletedException.java: Make constructors
+ public.
+ * javax/activity/ActivityRequiredException.java: Likewise.
+ * javax/activity/InvalidActivityException.java: Likewise.
+
+2007-01-17 Roman Kennke <kennke@aicas.com>
+
+ * javax/swing/plaf/basic/BasicRadioButtonUI.java
+ (paint): Use helper method to figure out icon. Don't override
+ the icon field in that class. Check for null icons.
+ (getCurrentIcon): New helper function to determine icon to be
+ painted.
+
+2007-01-17 Mark Wielaard <mark@klomp.org>
+
+ * javax/activity/ActivityCompletedException.java: New file.
+ * javax/activity/ActivityRequiredException.java: Likewise.
+ * javax/activity/InvalidActivityException.java: Likewise.
+ * javax/activity/package.html: Likewise.
+
+2007-01-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/DefaultLoaderRepository.java:
+ (loadClass(String)): Made static.
+ (loadClassWithout(String,ClassLoader)): Likewise.
+
+2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/exception/TypeMismatchException.java: New file.
+ * gnu/classpath/jdwp/exception/InvalidFrameException.java: Fix indentation.
+ * gnu/classpath/jdwp/exception/InvalidSlotException.java: Fix indentation.
+
+2007-01-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/AttributeValueExp.java:
+ Corrected serialVersionUID typo.
+ * javax/management/DefaultLoaderRepository.java:
+ New file.
+ * javax/management/MBeanServerFactory.java:
+ Add generic typing.
+
+2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/exception/InvalidFrameException.java: New file.
+
+2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/exception/AbsentInformationException.java: New file.
+
+2007-01-15 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/exception/InvalidSlotException.java: New file.
+
+2007-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/AttributeValueExp.java: New file.
+ * javax/management/QueryEval.java: Likewise.
+ * javax/management/StringValueExp.java: Likewise.
+
+2007-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/AttributeChangeNotificationFilter.java:
+ New file.
+
+2007-01-11 Andreas Tobler <a.tobler@schweiz.org>
+
+ * examples/gnu/classpath/examples/awt/AicasGraphicsBenchmark.java
+ (AicasGraphicsBenchmark): Load images from ../icons.
+ * examples/gnu/classpath/examples/java2d/J2dBenchmark.java (init):
+ Likewise.
+ * examples/Makefile.am (EXAMPLE_ICONS): Add rule to copy *.gif files
+ to icons.
+ * examples/gnu/classpath/examples/awt/aicas.png: Move to ../icons.
+ Delete here.
+ * examples/gnu/classpath/examples/awt/palme.gif: Likewise.
+ * examples/gnu/classpath/examples/java2d/aicas.png: Likewise.
+ * examples/gnu/classpath/examples/java2d/palme.gif: Likewise.
+ * examples/gnu/classpath/examples/icons/aicas.png: Moved.
+ * examples/gnu/classpath/examples/icons/palme.gif: Likewise.
+
+2007-01-09 Tania Bento <tbento@redhat.com>
+
+ * java/security/Permission.java:
+ (toString): If there are no actions, then there should not
+ be a space between its name and ')'.
+
+2007-01-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * javax/management/AttributeChangeNotification.java:
+ New file.
+
+2007-01-08 Cameron McCormack <cam@mcc.id.au>
+
+ PR 30355
+ * java/util/Arrays.java:
+ (binarySearch(byte[],byte)): Added check for zero-length array.
+ (binarySearch(short[],short)): Likewise.
+ (binarySearch(int[],int)): Likewise.
+ (binarySearch(long[],long)): Likewise.
+ (binarySearch(char[],char)): Likewise.
+ (binarySearch(float[],float)): Likewise.
+ (binarySearch(double[],double)): Likewise.
+ (binarySearch(Object[],Object)): Likewise.
+ (binarySearch(T[],T,Comparator)): Likewise.
+
+2007-01-08 Tom Tromey <tromey@redhat.com>
+
+ * tools/gnu/classpath/tools/native2ascii/Native2ASCII.java (run):
+ Fix length check. PR classpath/30346.
+
+2007-01-09 Raif S. Naffah <classpath@naffah-raif.name>
+
+ * tools/gnu/classpath/tools/jarsigner/SFHelper.java: Updated copyright year.
+ (sfEntries): Use generics.
+ (writeDSA()): Likewise.
+ (startSigning()): Likewise.
+ (updateEntry()): Likewise.
+ * tools/gnu/classpath/tools/jarsigner/Messages.java: Updated copyright year.
+ (CACHED_FORMATS): Use generics.
+ (getFormattedString()): Likewise.
+ * tools/gnu/classpath/tools/jarsigner/Main.java: Updated copyright year.
+ (fileAndAlias): Use generics.
+ (ToolParser.validate()): Likewise.
+ * tools/gnu/classpath/tools/jarsigner/JarVerifier.java:
+ Updated copyright year.
+ Re-ordered imports and removed unused entries.
+ (entryHashes): Use generics.
+ (start()): Likewise.
+ (verifySFEntries()): Likewise.
+ Use map's entrySet() instead of its keySet().
+
+2007-01-08 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/text/DateFormat.java:
+ (computeInstance(int,int,Locale,boolean,boolean)):
+ Throw an exception when locale info. is unavailable.
+ (computeDefault(int,int,boolean,boolean)): New method.
+ (getDateInstance(int,Locale)): Check providers.
+ (getDateTimeInstance(int,int,Locale)): Likewise.
+ (getTimeInstance(int,Locale)): Likewise.
+ * java/text/DateFormatSymbols.java:
+ Update documentation to match DecimalFormatSymbols.
+ * java/text/DecimalFormatSymbols.java:
+ (DecimalFormatSymbols(Locale)): Reordered.
+ (getInstance()): Implemented.
+ (getInstance(Locale)): Implemented.
+ * java/text/NumberFormat.java:
+ (computeInstance(Locale,String,String)):
+ Throw an exception when locale info is unavailable.
+ (getCurrencyInstance(Locale)): Check providers.
+ (getIntegerInstance(Locale)): Likewise.
+ (getNumberInstance(Locale)): Likewise.
+ (getPercentInstance(Locale)): Likewise.
+ * java/text/spi/DateFormatProvider.java: New file.
+ * java/text/spi/DecimalFormatSymbolsProvider.java: Likewise.
+ * java/text/spi/NumberFormatProvider.java: Likewise.
+
+2007-01-07 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ Fixes bug #30377
+ * native/jni/native-lib/cpnet.h: Add some include files.
+
+2007-01-07 Roman Kennke <roman@kennke.org>
+
+ PR 30337
+ * java/awt/Component.java
+ (getFontImpl): Return null when the component has no font set
+ and also has no parent yet.
+ * javax/swing/plaf/basic/BasicComboBoxUI.java
+ (PropertyChangeHandler.propertyChange): Only add editor when combo
+ box is editable. Avoid fetching the property name repeatedly.
+ Invalidate when renderer or prototypeDisplayValue change.
+ (uninstallComponents): Unconfigure everything and then remove all
+ components.
+ * javax/swing/plaf/basic/BasicComboPopup.java
+ (uninstallingUI): Don't nullify list model.
+ * javax/swing/plaf/metal/MetalComboBoxUI.java
+ (createArrowButton): Pass currentValuePane to the MetalComboBoxButton
+ constructor rather than a new (unconnected) CellRendererPane.
+
+2007-01-06 Roman Kennke <roman@kennke.org>
+
+ PR 30337
+ * javax/swing/plaf/basic/BasicComboBoxUI.java
+ (installUI): Install popup and list here.
+ Don't configure the arrow button and editor here.
+ (installComponents): Don't install popup and list here. (Moved
+ to installUI). Configure arrow button here and check for null.
+ (addEditor): Configure editor here.
+ (configureArrowButton): Directly fetch listeners from popup.
+ (paintCurrentValue): Removed unused local variables.
+ (layoutContainer): Removed unused local variables.
+ (PropertyChangeHandler.propertyChange): Don't invalidate minimumSize
+ on each property change. Avoid calling getPropertyName() repeatedly.
+ Clean up. Call addEditor() when editor changes. Configure and
+ unconfigure editor when editable changes. Use 'model' instead
+ of non-existing 'dataModel' property.
+ * javax/swing/plaf/basic/BasicComboPopup.java
+ (uninstallingUI): Remove property change listener and item listener
+ here. Uninstall list listeners. Set model to null to prevent leakage.
+ (configureList): Don't sync list selection there.
+ (uninstallComboBoxListeners): Moved to uninstallingUI.
+ (uninstallListeners): Moved to uninstallingUI.
+ * javax/swing/plaf/metal/MetalComboBoxUI.java
+ (createPopup): Call super.
+ (getMinimumSize): Removed unused statement.
+
+2007-01-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/text/Collator.java:
+ (getInstance(Locale)): Check providers.
+ * java/text/spi/CollatorProvider.java:
+ New file.
+
+2007-01-04 Roman Kennke <roman@kennke.org>
+
+ PR 30122
+ * java/awt/Component.java
+ (getFont): Don't synchronize on tree lock here. The method is
+ thread-safe 'enough' by fetching local variables in getFontImpl().
+
+2007-01-04 Roman Kennke <roman@kennke.org>
+
+ * java/awt/AWTEvent.java
+ (toString): Don't include the whole component in the output,
+ only its name.
+ * java/awt/Component.java
+ (isShowing): Create local copy of parent field for better
+ thread safety and efficiency.
+ * java/awt/EventDispatchThread.java
+ (EventDispatchThread): Make sure the event thread is not a daemon
+ thread in case it gets started by a daemon thread.
+ * java/awt/image/IndexColorModel.java
+ (createColorMap): New helper method for creating the color map.
+ (IndexColorModel): (all constructors) use createColorMap() helper
+ method.
+
+2007-01-04 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/font/autofit/GlyphHints.java
+ (alignStrongPoints): Don't special case the vertical dimension.
+ (computeInflectionPoints): Corrected computation of inflection
+ points.
+ * gnu/java/awt/font/autofit/Utils.java
+ (ANGLE_4PI): Removed.
+ (ANGLE_PI2): New constant for PI/2.
+ (ANGLE_PI4): New constant for PI/4.
+ (angleDiff): Fixed.
+ (atan): Fixed.
+
+2007-01-03 Cameron McCormack <cam@mcc.id.au>
+
+ Fixes bug #29246
+ * java/awt/Toolkit.java (getLockingKeyState): Use AWTUtilities
+ isValidKey method. Throw UnsupportedOperationException on a valid
+ key (for which no locking state can be given).
+ * gnu/java/awt/AWTUtilities.java (isValidKey): New method.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java (getLockingKeyState): New
+ method.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (Java_gnu_java_awt_peer_gtk_GtkToolkit_getLockState): New method.
+ * include/gnu_java_awt_peer_gtk_GtkToolkit.h: Regenerated.
+
+2007-01-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/text/BreakIterator.java:
+ (getCharacterInstance(Locale)): Check providers.
+ (getLineInstance(Locale)): Likewise.
+ (getSentenceInstance(Locale)): Likewise.
+ (getWordInstance(Locale)): Likewise.
+ * java/text/spi/BreakIteratorProvider.java:
+ New file.
+ * java/text/spi/DateFormatSymbolsProvider.java:
+ Update header text.
+ * java/util/ServiceConfigurationError.java:
+ Add serialVersionUID.
+
+2007-01-03 Francis Kung <fkung@redhat.com>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java:
+ (copy): Copy and set antialias value.
+
+2007-01-03 Tania Bento <tbento@redhat.com>
+
+ * java/awt/CardLayout.java:
+ (maximumLayoutSize): Return a new Dimension with a width of value
+ Integer.MAX_VALUE and a height of value Integer.MAX_VALUE if Component
+ has no components.
+
+2007-01-03 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/text/DateFormatSymbols.java:
+ (getZoneStrings(ResourceBundle)): Changed to...
+ (getZoneStrings(ResourceBundle,Locale)): Added
+ use of TimeZoneNamesProvider.
+ (getZoneStrings()): Return either mutated zone
+ strings or initial ones.
+ (getInstance(Locale)): Check DateFormatSymbolsProvider
+ instances.
+ * java/text/spi/DateFormatSymbolsProvider.java:
+ New file.
+ * java/text/spi/package.html: New file.
+
+2007-01-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/util/Currency.java:
+ (getSymbol(Locale)): Removed unneeded variable
+ and terminate loop early.
+ * java/util/Locale.java:
+ (getDisplayLanguage(Locale)): Fixed to use
+ LocaleNameProvider.
+ (getDisplayCountry(Locale)): Likewise.
+ (getDisplayVariant(Locale)): Likewise.
+ * java/util/spi/LocaleNameProvider.java:
+ New file.
+ * java/util/spi/TimeZoneNameProvider.java:
+ Likewise.
+
+2007-01-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/java/locale/LocaleHelper.java:
+ (getLocalizedString(Locale,String,String,boolean,
+ boolean)): Removed, no longer needed.
+ (getFallbackLocale(Locale)): Implemented.
+ * java/lang/String.java:
+ (isEmpty()): Implemented.
+ * java/util/Currency.java:
+ (getSymbol(Locale)): Reimplemented to use SPI.
+ * java/util/Locale.java:
+ (ROOT): Added.
+ * java/util/spi/CurrencyNameProvider.java:
+ New file.
+ * java/util/spi/LocaleServiceProvider.java:
+ Likewise.
+ * java/util/spi/package.html: Likewise.
+
+2007-01-02 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (FONT): New constant field. This is the default font to use as long
+ as nothing else is set.
+ (paintContext): New field. Temporarily stores the paint context.
+ (scanlineConverters): New field. Stores the scanline converters
+ for each thread.
+ (shapeCache): Genericified.
+ (STANDARD_HINTS): New constant field. The standard rendering hints
+ as long as nothing else is set.
+ (STANDARD_STROKE): New constant field. The standard stroke as long
+ as nothing else is set.
+ (static_initializer): Initialize standard hints.
+ (AbstractGraphics2D): Use constant fields for hints and stroke.
+ (drawGlyphVector): Use simpler method to draw the outline.
+ (fillScanline): Use paintContext field.
+ (fillShape): Use new ScanlineConverter to fill shapes.
+ (fillShapeAntialias): Removed. This will be done in fillShape.
+ (fillShapeImpl): Removed. This is done now in the ScanlineConverter
+ class.
+ (getScanlineConverter): New method. Returns the scanline converter
+ for each thread.
+ (getSegments): Removed. This is now implemented in ScanlineConverter.
+ (getShapeCache): Use genericified shapeCache field.
+ (init): Use fixed default font. Don't fetch destination raster here.
+ * gnu/java/awt/java2d/ActiveEdges.java: New class. Stores a set
+ of active edges for scanline conversion.
+ * gnu/java/awt/java2d/PolyEdge.java
+ (poolNext): Implements linked list for edge pool.
+ (scanlineNext): Implements linked list for scanline edge lists.
+ (slope): Use fixed point decimal.
+ (slope,x0,y0,x1,y1,xIntersection): Use fixed point decimal.
+ (PolyEdge()): New constructor.
+ (PolyEdge): Use fixed point decimals.
+ (init): Use fixed point decimals.
+ (intersect): New method. Intersects this edge with a scanline.
+ * gnu/java/awt/java2d/Scanline.java: New class. A list of edges
+ for a scanline plus utilities.
+ * gnu/java/awt/java2d/ScanlineConverter.java: New class. Implements
+ an efficient scanline converter for rendering Shape objects.
+
+2007-01-02 Roman Kennke <roman@kennke.org>
+
+ * gnu/java/math/Fixed.java: New class. Fixed point arithmetics
+ utilities.
+
+2007-01-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * ChangeLog-2006: New file.
+ * gnu/classpath/ServiceFactory.java:
+ Add option of throwing a ServiceConfigurationError.
+ (lookupProviders(Class,ClassLoader,boolean)): Implemented.
+ * java/util/ServiceConfigurationError.java: New file.
+ * java/util/ServiceLoader.java: Likewise.
+
+
+\f
+Local Variables:
+coding: iso-latin-1-unix
+End:
+2008-06-28 Matthias Klose <doko@ubuntu.com>
+
+ * m4/ac_prog_javac.m4: Disable check for JAVAC, when
+ not configured with --enable-java-maintainer-mode.
+ * aclocal.m4, configure: Regenerate.
+ * native/jni/gstreamer-peer/Makefile.am: Do not link with
+ libclasspathnative.
+ * native/jni/gstreamer-peer/Makefile.in: Regenerate.
+ * tools/Makefile.am, lib/Makefile.am: Use JAVAC for setting
+ JCOMPILER, drop flags not understood by gcj.
+
2008-06-24 Tom Tromey <tromey@redhat.com>
PR libgcj/32198:
* tools/gnu/classpath/tools/rmic/SourceGiopRmicCompiler.class:
Rebuilt.
+2008-04-18 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/35457
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2008-04-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * lib/gen-classlist.sh.in: Avoid grepping each omission, by
+ building an awk script with a hash for literal files, and
+ awk regular expressions for the rest.
+ * configure.ac: Call AC_PROG_AWK.
+ * configure: Regenerate.
+
+ * m4/gcc_attribute.m4 (GCC_ATTRIBUTE): Fix cache variable name.
+ * tools/Makefile.am (gappletviewer, gjarsigner, gkeytool, gjar)
+ (gnative2ascii, gserialver, gjavah, grmiregistry, gtnameserv)
+ (gorbd, grmid, grmic) [!CREATE_WRAPPERS]: Add stub dependencies
+ for these scripts, to trick automake into hiding the respective
+ rules for the programs below the CREATE_WRAPPERS conditional.
+ * aclocal.m4: Regenerate.
+ * configure: Likewise.
+ * Makefile.in: Likewise.
+ * native/jni/Makefile.in: Likewise.
+ * native/jni/classpath/Makefile.in: Likewise.
+ * native/jni/gstreamer-peer/Makefile.in: Likewise.
+ * native/jni/midi-dssi/Makefile.in: Likewise.
+ * native/jni/gconf-peer/Makefile.in: Likewise.
+ * native/jni/java-io/Makefile.in: Likewise.
+ * native/jni/native-lib/Makefile.in: Likewise.
+ * native/jni/java-util/Makefile.in: Likewise.
+ * native/jni/java-lang/Makefile.in: Likewise.
+ * native/jni/midi-alsa/Makefile.in: Likewise.
+ * native/jni/java-nio/Makefile.in: Likewise.
+ * native/jni/java-net/Makefile.in: Likewise.
+ * native/jni/xmlj/Makefile.in: Likewise.
+ * native/jni/qt-peer/Makefile.in: Likewise.
+ * native/jni/gtk-peer/Makefile.in: Likewise.
+ * native/Makefile.in: Likewise.
+ * native/jawt/Makefile.in: Likewise.
+ * native/fdlibm/Makefile.in: Likewise.
+ * native/plugin/Makefile.in: Likewise.
+ * resource/Makefile.in: Likewise.
+ * scripts/Makefile.in: Likewise.
+ * tools/Makefile.in: Likewise.
+ * doc/Makefile.in: Likewise.
+ * doc/api/Makefile.in: Likewise.
+ * lib/Makefile.in: Likewise.
+ * external/Makefile.in: Likewise.
+ * external/jsr166/Makefile.in: Likewise.
+ * external/sax/Makefile.in: Likewise.
+ * external/w3c_dom/Makefile.in: Likewise.
+ * external/relaxngDatatype/Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * examples/Makefile.in: Likewise.
+
2008-04-17 Tom Tromey <tromey@redhat.com>
PR libgcj/35950:
Classpath.
* tools/classes/gnu/classpath/tools/jar/Entry.class: Update.
+2008-03-10 Jim Meyering <meyering@redhat.com>
+
+ Don't leak upon failed realloc.
+ * native/jni/classpath/jcl.c (JCL_realloc): Upon failed realloc,
+ free the original buffer before throwing the exception.
+
+2008-03-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * doc/cp-hacking.texinfo: Fix spacing after periods.
+ * doc/cp-tools.texinfo: Likewise.
+ * doc/cp-vmintegration.texinfo: Likewise.
+
+ * doc/cp-hacking.texinfo: Fix some typos.
+ * doc/cp-tools.texinfo: Likewise.
+ * doc/cp-vmintegration.texinfo: Likewise.
+
2008-03-02 Jakub Jelinek <jakub@redhat.com>
* gnu/java/rmi/registry/RegistryImpl.java (version): Update
* tools/classes/gnu/classpath/tools/native2ascii/Native2ASCII$3.class:
Added.
+2008-01-27 Bernhard Fischer <rep.dot.nop@gmail.com>
+
+ * java/util/SimpleTimeZone.java (SimpleTimeZone): Fix typo in comment.
+ * gnu/CORBA/GIOP/v1_2/RequestHeader.java (RequestHeader): Fix typo in
+ exception message.
+
+2008-01-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * doc/README.jaxp: Fix typos.
+
2007-09-04 Matthias Klose <doko@ubuntu.com>
* configure.ac: Append libgcj soversion to nativeexeclibdir.
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
-These are generic installation instructions.
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
+the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
-cache files.)
+cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
+ `./configure' to configure the package for your system.
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
2. Type `make' to compile the package.
all sorts of other programs in order to regenerate files that came
with the distribution.
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
Compilers and Options
=====================
by setting variables in the command line or in the environment. Here
is an example:
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
+own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
Installation Names
==================
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script). Here is a another example:
+overridden in the site shell script).
- /bin/bash ./configure CONFIG_SHELL=/bin/bash
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
-configuration-related scripts to be executed by `/bin/bash'.
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
## Input file for automake to generate the Makefile.in used by configure
# lib first, to compile .class files before native code, last examples
+## GCJ LOCAL: unconditionally build tools subdur
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
ChangeLog.gnujaxp.1 ChangeLog.gnujaxp.2 ChangeLog.libxmlj \
autogen.sh
-#DISTCHECK_CONFIGURE_FLAGS = --enable-gjdoc
+DISTCHECK_CONFIGURE_FLAGS = --with-gjdoc --enable-gstreamer-peer \
+ --enable-xmlj --enable-qt-peer
dist-hook:
-$(mkinstalldirs) $(distdir)/include
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
ChangeLog.gnujaxp.1 ChangeLog.gnujaxp.2 ChangeLog.libxmlj \
autogen.sh
+DISTCHECK_CONFIGURE_FLAGS = --with-gjdoc --enable-gstreamer-peer \
+ --enable-xmlj --enable-qt-peer
+
all: all-recursive
.SUFFIXES:
native: lib
-#DISTCHECK_CONFIGURE_FLAGS = --enable-gjdoc
-
dist-hook:
-$(mkinstalldirs) $(distdir)/include
-cp -f $(top_srcdir)/include/*.in $(distdir)/include
-New in release 0.96
+Bug fixes in release 0.97.2 (Jun 06, 2007)
+
+* Include headers in the release tarball.
+* Allow the building of tools to be optional.
+* Only check for a Java compiler when required.
+* Allow VMOperatingSystemMXBeanImpl to compile on Solaris.
+* Documentation typo fixes
+* Fix memory leak in native/jni/classpath/jcl.c
+* Web page updates (PR classpath/22883)
+* Fixes to pass the JSR166 TCK
+* Use awk to construct the classlist on building
+* Fix deadlock in Logger (PR classpath/35974)
+* Fix regression in java.lang.String (PR classpath/35482)
+* Allow Classpath tools to handle @file options.
+* Allow parseInt to handle a + prefix correctly.
+* Remove use of 1.5 language constructs in the VM layer.
+
+Bug fixes in release 0.97.1 (Mar 11, 2007)
+
+* Include documentation for JSR166 (java.util.concurrent)
+* Fix STaX API compatability.
+* Include the tools properties file in the release tarball.
+
+New in release 0.97 (Feb 22, 2007)
+
+Build changes:
+
+* A copy of javah (to produce C header files from Java source code)
+is now required to generate the files in include.
+* The javac check has been changed so that it attempts to find ecj,
+javac and gcj (in that order). You may override this by using
+JAVAC=<preferred javac>
+
+Runtime interface changes:
+
+* Removed VMFloat.floatToIntBits amd VMDouble.doubleToLongBits.
+* Added new getParameterAnnotations() methods in Constructor and Method.
+
+New in release 0.96.1 (Oct 16, 2007)
+
+* Small compile, configure and build fixes.
+
+New in release 0.96 (Oct 15, 2007)
+
+* New experimental GStreamer javax.sound peer (see README.gstreamer)
+* The JNI interface has been updated to 1.6
+* Better support for the OpenJDK javac compiler
+* Support for using javah via tools.zip and com.sun.tools.javah.Main
+* Much improved Escher AWT peers
+* Many bug fixes including improvements to AWT and Swing support
Runtime interface changes:
* Add VMFloat.toString(float) and VMFloat.parseFloat(String). Default
implementations are the same as previous behavior.
+* Add new default implementations of VMMemoryMXBean.getHeapUsage()
+ and VMMemoryMXBean.getNonHeapUsage() via iteration over the memory
+ pools of the appropriate type.
New in release 0.95 (Apr 23, 2007)
Petter Reinholdtsen (pere@hungry.com)
Julian Scheid (julian.scheid@sektor37.de)
Martin Schröder (ms@artcom-gmbh.de)
+Robert Schuster (robertschuster@fsfe.org)
Gaute Smaaland (gs@sevenmountains.no)
Michael Smith (msmith@spinnakernet.com)
J. Russell Smyth (drfish@uswest.net)
m4_include([../../ltoptions.m4])
m4_include([../../ltsugar.m4])
m4_include([../../ltversion.m4])
+m4_include([m4/ac_prog_javac.m4])
+m4_include([m4/ac_prog_javac_works.m4])
m4_include([m4/acattribute.m4])
m4_include([m4/accross.m4])
m4_include([m4/acinclude.m4])
#! /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 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
-timestamp='2006-12-08'
+timestamp='2008-04-14'
# 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
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
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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."
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:SunOS:5.*:*)
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[45])
+ *:AIX:*:[456])
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
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
- i*:MINGW*:*)
+ *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:windows32*:*)
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- x86:Interix*:[3456]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[3456]* | authenticamd:Interix*:[3456]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
echo ${UNAME_MACHINE}-pc-minix
exit ;;
arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
exit ;;
- xtensa:Linux:*:*)
- echo xtensa-unknown-linux-gnu
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
SX-8:SUPER-UX:*:*)
echo sx8-nec-superux${UNAME_RELEASE}
exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
-timestamp='2006-12-08'
+timestamp='2008-04-14'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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."
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore \
- | mep \
+ | maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
- | mips64vr | mips64vrel \
+ | mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| ip2k-* | iq2000-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mep-* \
| mips16-* \
| mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
+ | mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
+ | xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-*)
;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
basic_machine=ns32k-sequent
os=-dynix
;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16c)
- basic_machine=cr16c-unknown
+ cr16)
+ basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
basic_machine=m88k-motorola
os=-sysv3
;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
basic_machine=m68k-isi
os=-sysv
;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
m88k-omron*)
basic_machine=m88k-omron
;;
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
basic_machine=i860-intel
os=-osf
;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
pbd)
basic_machine=sparc-tti
;;
basic_machine=tic6x-unknown
os=-coff
;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
-zvmoe)
os=-zvmoe
;;
+ -dicos*)
+ os=-dicos
+ ;;
-none)
;;
*)
m68*-cisco)
os=-aout
;;
+ mep-*)
+ os=-elf
+ ;;
mips*-cisco)
os=-elf
;;
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for GNU Classpath 0.96-pre.
+# Generated by GNU Autoconf 2.59 for GNU Classpath 0.97.2.
#
# Report bugs to <classpath@gnu.org>.
#
# Identity of this package.
PACKAGE_NAME='GNU Classpath'
PACKAGE_TARNAME='classpath'
-PACKAGE_VERSION='0.96-pre'
-PACKAGE_STRING='GNU Classpath 0.96-pre'
+PACKAGE_VERSION='0.97.2'
+PACKAGE_STRING='GNU Classpath 0.97.2'
PACKAGE_BUGREPORT='classpath@gnu.org'
ac_unique_file="java/lang/System.java"
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE GENINSRC_TRUE GENINSRC_FALSE multi_basedir LIBVERSION CLASSPATH_MODULE CLASSPATH_CONVENIENCE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CREATE_COLLECTIONS_TRUE CREATE_COLLECTIONS_FALSE CREATE_JNI_LIBRARIES_TRUE CREATE_JNI_LIBRARIES_FALSE CREATE_CORE_JNI_LIBRARIES_TRUE CREATE_CORE_JNI_LIBRARIES_FALSE CREATE_GCONF_PEER_LIBRARIES_TRUE CREATE_GCONF_PEER_LIBRARIES_FALSE CREATE_GSTREAMER_PEER_LIBRARIES_TRUE CREATE_GSTREAMER_PEER_LIBRARIES_FALSE default_toolkit CREATE_XMLJ_LIBRARY_TRUE CREATE_XMLJ_LIBRARY_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP CREATE_ALSA_LIBRARIES_TRUE CREATE_ALSA_LIBRARIES_FALSE CREATE_DSSI_LIBRARIES_TRUE CREATE_DSSI_LIBRARIES_FALSE CREATE_GTK_PEER_LIBRARIES_TRUE CREATE_GTK_PEER_LIBRARIES_FALSE CREATE_QT_PEER_LIBRARIES_TRUE CREATE_QT_PEER_LIBRARIES_FALSE CREATE_PLUGIN_TRUE CREATE_PLUGIN_FALSE toolexeclibdir nativeexeclibdir glibjdir VM_BINARY CREATE_JNI_HEADERS_TRUE CREATE_JNI_HEADERS_FALSE CREATE_WRAPPERS_TRUE CREATE_WRAPPERS_FALSE LN_S LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP PERL COLLECTIONS_PREFIX LIBMAGIC LIBICONV LTLIBICONV WARNING_CFLAGS EXTRA_CFLAGS STRICT_WARNING_CFLAGS ERROR_CFLAGS PKG_CONFIG XML_CFLAGS XML_LIBS XSLT_CFLAGS XSLT_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CFLAGS GTK_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS CAIRO_CFLAGS CAIRO_LIBS XTEST_LIBS GCONF_CFLAGS GCONF_LIBS GDK_CFLAGS GDK_LIBS GSTREAMER_CFLAGS GSTREAMER_LIBS GSTREAMER_BASE_CFLAGS GSTREAMER_BASE_LIBS GSTREAMER_PLUGINS_BASE_CFLAGS GSTREAMER_PLUGINS_BASE_LIBS GST_PLUGIN_LDFLAGS GSTREAMER_FILE_READER GSTREAMER_MIXER_PROVIDER QT_CFLAGS QT_LIBS MOC MOZILLA_CFLAGS MOZILLA_LIBS GLIB_CFLAGS GLIB_LIBS PLUGIN_DIR USER_JAVAH CLASSPATH_INCLUDES GCJ JIKES JIKESENCODING JIKESWARNINGS KJC ECJ JAVAC FOUND_GCJ_TRUE FOUND_GCJ_FALSE FOUND_JIKES_TRUE FOUND_JIKES_FALSE FOUND_ECJ_TRUE FOUND_ECJ_FALSE FOUND_JAVAC_TRUE FOUND_JAVAC_FALSE FOUND_KJC_TRUE FOUND_KJC_FALSE USER_CLASSLIB USER_SPECIFIED_CLASSLIB_TRUE USER_SPECIFIED_CLASSLIB_FALSE vm_classes MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBDEBUG INIT_LOAD_LIBRARY ECJ_JAR JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION REMOVE MKDIR CP DATE FIND ZIP FASTJAR INSTALL_GLIBJ_ZIP_TRUE INSTALL_GLIBJ_ZIP_FALSE INSTALL_CLASS_FILES_TRUE INSTALL_CLASS_FILES_FALSE BUILD_CLASS_FILES_TRUE BUILD_CLASS_FILES_FALSE EXAMPLESDIR GJDOC CREATE_API_DOCS_TRUE CREATE_API_DOCS_FALSE JAY JAY_SKELETON REGEN_PARSERS_TRUE REGEN_PARSERS_FALSE USE_PREBUILT_GLIBJ_ZIP_TRUE USE_PREBUILT_GLIBJ_ZIP_FALSE PATH_TO_GLIBJ_ZIP USE_ESCHER_TRUE USE_ESCHER_FALSE PATH_TO_ESCHER ENABLE_LOCAL_SOCKETS_TRUE ENABLE_LOCAL_SOCKETS_FALSE DEFAULT_PREFS_PEER LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE GENINSRC_TRUE GENINSRC_FALSE multi_basedir LIBVERSION CLASSPATH_MODULE CLASSPATH_CONVENIENCE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CREATE_COLLECTIONS_TRUE CREATE_COLLECTIONS_FALSE CREATE_JNI_LIBRARIES_TRUE CREATE_JNI_LIBRARIES_FALSE CREATE_CORE_JNI_LIBRARIES_TRUE CREATE_CORE_JNI_LIBRARIES_FALSE CREATE_GCONF_PEER_LIBRARIES_TRUE CREATE_GCONF_PEER_LIBRARIES_FALSE CREATE_GSTREAMER_PEER_LIBRARIES_TRUE CREATE_GSTREAMER_PEER_LIBRARIES_FALSE default_toolkit CREATE_XMLJ_LIBRARY_TRUE CREATE_XMLJ_LIBRARY_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP CREATE_ALSA_LIBRARIES_TRUE CREATE_ALSA_LIBRARIES_FALSE CREATE_DSSI_LIBRARIES_TRUE CREATE_DSSI_LIBRARIES_FALSE CREATE_GTK_PEER_LIBRARIES_TRUE CREATE_GTK_PEER_LIBRARIES_FALSE CREATE_QT_PEER_LIBRARIES_TRUE CREATE_QT_PEER_LIBRARIES_FALSE CREATE_PLUGIN_TRUE CREATE_PLUGIN_FALSE toolexeclibdir nativeexeclibdir glibjdir VM_BINARY CREATE_JNI_HEADERS_TRUE CREATE_JNI_HEADERS_FALSE CREATE_WRAPPERS_TRUE CREATE_WRAPPERS_FALSE LN_S LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP PERL COLLECTIONS_PREFIX LIBMAGIC LIBICONV LTLIBICONV WARNING_CFLAGS EXTRA_CFLAGS STRICT_WARNING_CFLAGS ERROR_CFLAGS PKG_CONFIG XML_CFLAGS XML_LIBS XSLT_CFLAGS XSLT_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CFLAGS GTK_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS CAIRO_CFLAGS CAIRO_LIBS XTEST_LIBS GCONF_CFLAGS GCONF_LIBS GDK_CFLAGS GDK_LIBS GSTREAMER_CFLAGS GSTREAMER_LIBS GSTREAMER_BASE_CFLAGS GSTREAMER_BASE_LIBS GSTREAMER_PLUGINS_BASE_CFLAGS GSTREAMER_PLUGINS_BASE_LIBS GST_PLUGIN_LDFLAGS GSTREAMER_FILE_READER GSTREAMER_MIXER_PROVIDER QT_CFLAGS QT_LIBS MOC MOZILLA_CFLAGS MOZILLA_LIBS GLIB_CFLAGS GLIB_LIBS PLUGIN_DIR USER_JAVAH CLASSPATH_INCLUDES vm_classes MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBDEBUG INIT_LOAD_LIBRARY ECJ_JAR JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION REMOVE MKDIR CP DATE FIND ZIP FASTJAR INSTALL_GLIBJ_ZIP_TRUE INSTALL_GLIBJ_ZIP_FALSE INSTALL_CLASS_FILES_TRUE INSTALL_CLASS_FILES_FALSE BUILD_CLASS_FILES_TRUE BUILD_CLASS_FILES_FALSE EXAMPLESDIR TOOLSDIR GJDOC CREATE_API_DOCS_TRUE CREATE_API_DOCS_FALSE JAY JAY_SKELETON REGEN_PARSERS_TRUE REGEN_PARSERS_FALSE USE_PREBUILT_GLIBJ_ZIP_TRUE USE_PREBUILT_GLIBJ_ZIP_FALSE PATH_TO_GLIBJ_ZIP JAVAC JAVAC_MEM_OPT USE_ESCHER_TRUE USE_ESCHER_FALSE PATH_TO_ESCHER ENABLE_LOCAL_SOCKETS_TRUE ENABLE_LOCAL_SOCKETS_FALSE DEFAULT_PREFS_PEER LIBOBJS LTLIBOBJS'
ac_subst_files=''
ac_pwd=`pwd`
# 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.96-pre to adapt to many kinds of systems.
+\`configure' configures GNU Classpath 0.97.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Classpath 0.96-pre:";;
+ short | recursive ) echo "Configuration of GNU Classpath 0.97.2:";;
esac
cat <<\_ACEOF
default=no
--disable-plugin compile gcjwebplugin (disabled by --disable-plugin)
default=yes
- --enable-regen-headers automatically regenerate JNI headers default=no
+ --enable-regen-headers automatically regenerate JNI headers default=yes if
+ headers don't exist
--enable-tool-wrappers create tool wrapper binaries default=no
--enable-static[=PKGS]
build static libraries [default=no]
will the VM explicitly invoke java.lang.System's
static initialization methods default=no
--enable-examples enable build of the examples default=yes
+ --enable-tools enable build of the tools default=yes
--enable-portable-native-sync
synchronize VM threads portably
--enable-local-sockets enables local (AF_LOCAL) socket API default: no
--with-qt4dir=DIR Qt4 installation directory used for OS-X. For other
systems use pkg-config.
--with-javah specify path or name of a javah-like program
- --with-gcj bytecode compilation with gcj
- --with-jikes bytecode compilation with jikes
- --with-kjc bytecode compilation with kjc
- --with-ecj bytecode compilation with ecj
- --with-javac bytecode compilation with javac
- --with-classpath specify path to a classes.zip like file
--with-vm-classes specify path to VM override source files
--with-ecj-jar=ABS.PATH specify jar file containing the Eclipse Java
Compiler
--with-glibj define what to install (zip|flat|both|none|build)
[default=zip]
--with-gjdoc generate documentation using gjdoc (default is NO)
- --with-jay Regenerate the parsers with jay must be given the
- path to the jay executable
+ --with-jay=DIR|PATH Regenerate the parsers with jay
--with-glibj-zip=ABS.PATH
use prebuilt glibj.zip class library
--with-escher=ABS.PATH specify path to escher dir or JAR for X peers
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-GNU Classpath configure 0.96-pre
+GNU Classpath configure 0.97.2
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
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.96-pre, which was
+It was created by GNU Classpath $as_me 0.97.2, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='classpath'
- VERSION='0.96-pre'
+ VERSION='0.97.2'
cat >>confdefs.h <<_ACEOF
case "${enableval}" in
yes) REGENERATE_JNI_HEADERS=yes ;;
no) REGENERATE_JNI_HEADERS=no ;;
- *) REGENERATE_JNI_HEADERS=no ;;
+ *) REGENERATE_JNI_HEADERS=yes ;;
esac
else
- REGENERATE_JNI_HEADERS=no
+ if test -e include/java_lang_VMSystem.h; then
+ REGENERATE_JNI_HEADERS=no ;
+ else
+ REGENERATE_JNI_HEADERS=yes ;
+ fi
fi;
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:5756: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:5755: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:5759: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:5758: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:5762: output\"" >&5)
+ (eval echo "\"\$as_me:5761: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6806 "configure"' > conftest.$ac_ext
+ echo '#line 6805 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7438: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7437: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7442: \$? = $ac_status" >&5
+ echo "$as_me:7441: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7760: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7759: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7764: \$? = $ac_status" >&5
+ echo "$as_me:7763: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7865: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7864: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7869: \$? = $ac_status" >&5
+ echo "$as_me:7868: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7920: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7919: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7924: \$? = $ac_status" >&5
+ echo "$as_me:7923: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10772 "configure"
+#line 10771 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10872 "configure"
+#line 10871 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15315: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15314: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15319: \$? = $ac_status" >&5
+ echo "$as_me:15318: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15414: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15413: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15418: \$? = $ac_status" >&5
+ echo "$as_me:15417: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15466: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15465: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15470: \$? = $ac_status" >&5
+ echo "$as_me:15469: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
+
+
+
+
sys/mman.h \
magic.h \
sys/event.h sys/epoll.h \
- ifaddrs.h
+ ifaddrs.h \
+ netinet/in_systm.h netinet/ip.h net/if.h \
+ sys/loadavg.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
+
for ac_func in ftruncate fsync select \
gethostbyname_r localtime_r \
strerror_r \
fcntl \
+ statvfs \
mmap munmap mincore msync madvise getpagesize sysconf \
lstat readlink \
inet_aton inet_addr inet_pton \
getifaddrs kqueue kevent epoll_create \
- readdir_r getloadavg
+ getloadavg
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
/usr/openwin/share/include'
if test "$ac_x_includes" = no; then
- # Guess where to find include files, by looking for Xlib.h.
+ # Guess where to find include files, by looking for Intrinsic.h.
# First, try using that file with no special directory specified.
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
sed 's/^/| /' conftest.$ac_ext >&5
for ac_dir in $ac_x_header_dirs; do
- if test -r "$ac_dir/X11/Xlib.h"; then
+ if test -r "$ac_dir/X11/Intrinsic.h"; then
ac_x_includes=$ac_dir
break
fi
# See if we find them without any special options.
# Don't add to $LIBS permanently.
ac_save_LIBS=$LIBS
- LIBS="-lX11 $LIBS"
+ LIBS="-lXt $LIBS"
if test x$gcc_no_link = xyes; then
{ { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
int
main ()
{
-XrmInitialize ()
+XtMalloc (0)
;
return 0;
}
echo "$as_me: error: GTK+ peers requested but no X library available" >&2;}
{ (exit 1); exit 1; }; }
fi
- echo "$as_me:$LINENO: checking for XTestQueryExtension in -lXtst" >&5
+ echo "$as_me:$LINENO: checking for XTestQueryExtension in -lXtst" >&5
echo $ECHO_N "checking for XTestQueryExtension in -lXtst... $ECHO_C" >&6
if test "${ac_cv_lib_Xtst_XTestQueryExtension+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_XTestQueryExtension" >&5
echo "${ECHO_T}$ac_cv_lib_Xtst_XTestQueryExtension" >&6
if test $ac_cv_lib_Xtst_XTestQueryExtension = yes; then
- XTEST_LIBS="$XTEST_LIBS -lX11 -lXtst"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_XTEST 1
+_ACEOF
+XTEST_LIBS="$XTEST_LIBS -X11 -lXtst"
else
- { { echo "$as_me:$LINENO: error: libXtst NOT found, required for GdkRobot" >&5
-echo "$as_me: error: libXtst NOT found, required for GdkRobot" >&2;}
- { (exit 1); exit 1; }; }
+ true
fi
+
succeeded=no
if test -z "$PKG_CONFIG"; then
USE_GCONF_PREFS_PEER=$enable_default_preferences_peer
if test "$USE_GCONF_PREFS_PEER" = ""; then
- DEFAULT_PREFS_PEER=gnu.java.util.prefs.GConfBasedFactory
+ DEFAULT_PREFS_PEER=gnu.java.util.prefs.GConfBasedFactory
fi
fi
GST_PLUGIN_LDFLAGS='-module -avoid-version -Wno-unused-parameter -no-undefined'
+
+ succeeded=no
+
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ echo "$as_me:$LINENO: checking for gdk-2.0 >= 2.8" >&5
+echo $ECHO_N "checking for gdk-2.0 >= 2.8... $ECHO_C" >&6
+
+ if $PKG_CONFIG --exists "gdk-2.0 >= 2.8" ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ succeeded=yes
+
+ echo "$as_me:$LINENO: checking GDK_CFLAGS" >&5
+echo $ECHO_N "checking GDK_CFLAGS... $ECHO_C" >&6
+ GDK_CFLAGS=`$PKG_CONFIG --cflags "gdk-2.0 >= 2.8"`
+ echo "$as_me:$LINENO: result: $GDK_CFLAGS" >&5
+echo "${ECHO_T}$GDK_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GDK_LIBS" >&5
+echo $ECHO_N "checking GDK_LIBS... $ECHO_C" >&6
+ GDK_LIBS=`$PKG_CONFIG --libs "gdk-2.0 >= 2.8"`
+ echo "$as_me:$LINENO: result: $GDK_LIBS" >&5
+echo "${ECHO_T}$GDK_LIBS" >&6
+ else
+ GDK_CFLAGS=""
+ GDK_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ GDK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-2.0 >= 2.8"`
+ echo $GDK_PKG_ERRORS
+ fi
+
+
+
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ :
+ else
+ { { echo "$as_me:$LINENO: error: Library requirements (gdk-2.0 >= 2.8) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
+echo "$as_me: error: Library requirements (gdk-2.0 >= 2.8) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+
+
+
GSTREAMER_FILE_READER=gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReader
GSTREAMER_MIXER_PROVIDER=gnu.javax.sound.sampled.gstreamer.GStreamerMixerProvider
fi
fi
else
- for ac_prog in gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah
+ for ac_prog in gjavah gjavah-4.3 gjavah-4.2 gjavah-4.1 gcjh-wrapper-4.1 gcjh-4.1 javah
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
fi
else
- for ac_prog in gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah
+ for ac_prog in gjavah gjavah-4.3 gjavah-4.2 gjavah-4.1 gcjh-wrapper-4.1 gcjh-4.1 javah
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
fi
else
- for ac_prog in gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah
+ for ac_prog in gjavah gjavah-4.3 gjavah-4.2 gjavah-4.1 gcjh-wrapper-4.1 gcjh-4.1 javah
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
fi
- user_specified_javac=
+# Check whether --with-vm-classes or --without-vm-classes was given.
+if test "${with_vm_classes+set}" = set; then
+ withval="$with_vm_classes"
+ vm_classes="$with_vm_classes"
+else
+ vm_classes='${top_srcdir}/vm/reference'
+fi;
-# Check whether --with-gcj or --without-gcj was given.
-if test "${with_gcj+set}" = set; then
- withval="$with_gcj"
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+ USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi;
+ echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
- if test "x${withval}" != x; then
- if test -f "${withval}"; then
- GCJ="${withval}"
- else
- # Extract the first word of ""${withval}"", so it can be a program name with args.
-set dummy "${withval}"; ac_word=$2
+
+if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# Check whether --enable-debug or --disable-debug was given.
+if test "${enable_debug+set}" = set; then
+ enableval="$enable_debug"
+ case "${enableval}" in
+ yes)
+ LIBDEBUG="true"
+
+cat >>confdefs.h <<\_ACEOF
+#define DEBUG 1
+_ACEOF
+
+ ;;
+ no) LIBDEBUG="false" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-debug" >&5
+echo "$as_me: error: bad value ${enableval} for --enable-debug" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ LIBDEBUG="false"
+fi;
+
+
+# Check whether --enable-load-library or --disable-load-library was given.
+if test "${enable_load_library+set}" = set; then
+ enableval="$enable_load_library"
+ case "${enableval}" in
+ yes) INIT_LOAD_LIBRARY="true" ;;
+ no) INIT_LOAD_LIBRARY="false" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-load-library" >&5
+echo "$as_me: error: bad value ${enableval} for --enable-load-library" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ INIT_LOAD_LIBRARY="true"
+fi;
+
+
+
+
+# Check whether --with-ecj-jar or --without-ecj-jar was given.
+if test "${with_ecj_jar+set}" = set; then
+ withval="$with_ecj_jar"
+ ECJ_JAR=$withval
+else
+ if test -f $multi_basedir/ecj.jar; then
+ ECJ_JAR='$(jardir)/ecj.jar'
+ fi
+fi;
+
+
+# Check whether --enable-java-lang-system-explicit-initialization or --disable-java-lang-system-explicit-initialization was given.
+if test "${enable_java_lang_system_explicit_initialization+set}" = set; then
+ enableval="$enable_java_lang_system_explicit_initialization"
+ case "${enableval}" in
+ yes|true) JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION="true" ;;
+ no|false) JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION="false" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-java-lang-system-explicit-initialization" >&5
+echo "$as_me: error: bad value ${enableval} for --enable-java-lang-system-explicit-initialization" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION="false"
+fi;
+
+
+
+REMOVE=""
+
+
+# Extract the first word of "mkdir", so it can be a program name with args.
+set dummy mkdir; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GCJ+set}" = set; then
+if test "${ac_cv_path_MKDIR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- case $GCJ in
+ case $MKDIR in
[\\/]* | ?:[\\/]*)
- ac_cv_path_GCJ="$GCJ" # Let the user override the test with a path.
+ ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GCJ="$as_dir/$ac_word$ac_exec_ext"
+ ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
;;
esac
fi
-GCJ=$ac_cv_path_GCJ
+MKDIR=$ac_cv_path_MKDIR
-if test -n "$GCJ"; then
- echo "$as_me:$LINENO: result: $GCJ" >&5
-echo "${ECHO_T}$GCJ" >&6
+if test -n "$MKDIR"; then
+ echo "$as_me:$LINENO: result: $MKDIR" >&5
+echo "${ECHO_T}$MKDIR" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
- fi
- else
- # Extract the first word of ""gcj"", so it can be a program name with args.
-set dummy "gcj"; ac_word=$2
+# Extract the first word of "cp", so it can be a program name with args.
+set dummy cp; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GCJ+set}" = set; then
+if test "${ac_cv_path_CP+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- case $GCJ in
+ case $CP in
[\\/]* | ?:[\\/]*)
- ac_cv_path_GCJ="$GCJ" # Let the user override the test with a path.
+ ac_cv_path_CP="$CP" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GCJ="$as_dir/$ac_word$ac_exec_ext"
+ ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
;;
esac
fi
-GCJ=$ac_cv_path_GCJ
+CP=$ac_cv_path_CP
-if test -n "$GCJ"; then
- echo "$as_me:$LINENO: result: $GCJ" >&5
-echo "${ECHO_T}$GCJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- if test "x$GCJ" != x; then
- echo "$as_me:$LINENO: checking gcj version 4.0" >&5
-echo $ECHO_N "checking gcj version 4.0... $ECHO_C" >&6
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- cat >conftest.$ac_ext <<_ACEOF
-#if __GNUC__ <= 3
- #error GCJ 4.0.0 or higher is required
- #endif
-
-_ACEOF
- $GCJ -E conftest.c > /dev/null
- gcj_4_result=$?
- if test "x$gcj_4_result" = "x0"; then
- echo "$as_me:$LINENO: result: 4.0 or higher found" >&5
-echo "${ECHO_T}4.0 or higher found" >&6
- else
- { echo "$as_me:$LINENO: WARNING: 4.0 or higher required" >&5
-echo "$as_me: WARNING: 4.0 or higher required" >&2;}
- fi
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- fi
-
- else
- if test "x${withval}" != xno; then
-
- if test "x" != x; then
- if test -f ""; then
- GCJ=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GCJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $GCJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GCJ="$GCJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GCJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-GCJ=$ac_cv_path_GCJ
-
-if test -n "$GCJ"; then
- echo "$as_me:$LINENO: result: $GCJ" >&5
-echo "${ECHO_T}$GCJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""gcj"", so it can be a program name with args.
-set dummy "gcj"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GCJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $GCJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GCJ="$GCJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GCJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-GCJ=$ac_cv_path_GCJ
-
-if test -n "$GCJ"; then
- echo "$as_me:$LINENO: result: $GCJ" >&5
-echo "${ECHO_T}$GCJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- if test "x$GCJ" != x; then
- echo "$as_me:$LINENO: checking gcj version 4.0" >&5
-echo $ECHO_N "checking gcj version 4.0... $ECHO_C" >&6
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- cat >conftest.$ac_ext <<_ACEOF
-#if __GNUC__ <= 3
- #error GCJ 4.0.0 or higher is required
- #endif
-
-_ACEOF
- $GCJ -E conftest.c > /dev/null
- gcj_4_result=$?
- if test "x$gcj_4_result" = "x0"; then
- echo "$as_me:$LINENO: result: 4.0 or higher found" >&5
-echo "${ECHO_T}4.0 or higher found" >&6
- else
- { echo "$as_me:$LINENO: WARNING: 4.0 or higher required" >&5
-echo "$as_me: WARNING: 4.0 or higher required" >&2;}
- fi
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- fi
-
- fi
- fi
- user_specified_javac=gcj
-
-else
-
-
- if test "x" != x; then
- if test -f ""; then
- GCJ=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GCJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $GCJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GCJ="$GCJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GCJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-GCJ=$ac_cv_path_GCJ
-
-if test -n "$GCJ"; then
- echo "$as_me:$LINENO: result: $GCJ" >&5
-echo "${ECHO_T}$GCJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""gcj"", so it can be a program name with args.
-set dummy "gcj"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GCJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $GCJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GCJ="$GCJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GCJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-GCJ=$ac_cv_path_GCJ
-
-if test -n "$GCJ"; then
- echo "$as_me:$LINENO: result: $GCJ" >&5
-echo "${ECHO_T}$GCJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- if test "x$GCJ" != x; then
- echo "$as_me:$LINENO: checking gcj version 4.0" >&5
-echo $ECHO_N "checking gcj version 4.0... $ECHO_C" >&6
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- cat >conftest.$ac_ext <<_ACEOF
-#if __GNUC__ <= 3
- #error GCJ 4.0.0 or higher is required
- #endif
-
-_ACEOF
- $GCJ -E conftest.c > /dev/null
- gcj_4_result=$?
- if test "x$gcj_4_result" = "x0"; then
- echo "$as_me:$LINENO: result: 4.0 or higher found" >&5
-echo "${ECHO_T}4.0 or higher found" >&6
- else
- { echo "$as_me:$LINENO: WARNING: 4.0 or higher required" >&5
-echo "$as_me: WARNING: 4.0 or higher required" >&2;}
- fi
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- fi
-
-
-fi;
-
-
-
-
-# Check whether --with-jikes or --without-jikes was given.
-if test "${with_jikes+set}" = set; then
- withval="$with_jikes"
-
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
-
- if test "x${withval}" != x; then
- if test -f "${withval}"; then
- JIKES="${withval}"
- else
- # Extract the first word of ""${withval}"", so it can be a program name with args.
-set dummy "${withval}"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JIKES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JIKES in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JIKES="$JIKES" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JIKES="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JIKES=$ac_cv_path_JIKES
-
-if test -n "$JIKES"; then
- echo "$as_me:$LINENO: result: $JIKES" >&5
-echo "${ECHO_T}$JIKES" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""jikes"", so it can be a program name with args.
-set dummy "jikes"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JIKES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JIKES in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JIKES="$JIKES" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JIKES="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JIKES=$ac_cv_path_JIKES
-
-if test -n "$JIKES"; then
- echo "$as_me:$LINENO: result: $JIKES" >&5
-echo "${ECHO_T}$JIKES" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- if test "x$JIKES" != "x"; then
- echo "$as_me:$LINENO: checking jikes version" >&5
-echo $ECHO_N "checking jikes version... $ECHO_C" >&6
- JIKES_VERSION=`$JIKES --version | awk '/^Jikes Compiler/' | cut -d ' ' -f 5`
- JIKES_VERSION_MAJOR=`echo "$JIKES_VERSION" | cut -d '.' -f 1`
- JIKES_VERSION_MINOR=`echo "$JIKES_VERSION" | cut -d '.' -f 2`
- if expr "$JIKES_VERSION_MAJOR" = 1 > /dev/null; then
- if expr "$JIKES_VERSION_MINOR" \< 19 > /dev/null; then
- JIKES=""
- fi
- fi
- if test "x$JIKES" != "x"; then
- echo "$as_me:$LINENO: result: $JIKES_VERSION" >&5
-echo "${ECHO_T}$JIKES_VERSION" >&6
- else
- { echo "$as_me:$LINENO: WARNING: $JIKES_VERSION: jikes 1.19 or higher required" >&5
-echo "$as_me: WARNING: $JIKES_VERSION: jikes 1.19 or higher required" >&2;}
- fi
-
- JIKESENCODING=
- if test -n "`$JIKES --help 2>&1 | grep encoding`"; then
- JIKESENCODING='-encoding UTF-8'
- fi
-
-
- JIKESWARNINGS="+Pno-switchcheck"
- if test "x$JIKES_VERSION_MAJOR" = x"1" ; then
- if ! test "x$JIKES_VERSION_MINOR" = x"19"; then
- JIKESWARNINGS="$JIKESWARNINGS +Pno-shadow"
- fi
- fi
-
-
- fi
-
- else
- if test "x${withval}" != xno; then
-
- if test "x" != x; then
- if test -f ""; then
- JIKES=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JIKES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JIKES in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JIKES="$JIKES" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JIKES="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JIKES=$ac_cv_path_JIKES
-
-if test -n "$JIKES"; then
- echo "$as_me:$LINENO: result: $JIKES" >&5
-echo "${ECHO_T}$JIKES" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""jikes"", so it can be a program name with args.
-set dummy "jikes"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JIKES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JIKES in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JIKES="$JIKES" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JIKES="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JIKES=$ac_cv_path_JIKES
-
-if test -n "$JIKES"; then
- echo "$as_me:$LINENO: result: $JIKES" >&5
-echo "${ECHO_T}$JIKES" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- if test "x$JIKES" != "x"; then
- echo "$as_me:$LINENO: checking jikes version" >&5
-echo $ECHO_N "checking jikes version... $ECHO_C" >&6
- JIKES_VERSION=`$JIKES --version | awk '/^Jikes Compiler/' | cut -d ' ' -f 5`
- JIKES_VERSION_MAJOR=`echo "$JIKES_VERSION" | cut -d '.' -f 1`
- JIKES_VERSION_MINOR=`echo "$JIKES_VERSION" | cut -d '.' -f 2`
- if expr "$JIKES_VERSION_MAJOR" = 1 > /dev/null; then
- if expr "$JIKES_VERSION_MINOR" \< 19 > /dev/null; then
- JIKES=""
- fi
- fi
- if test "x$JIKES" != "x"; then
- echo "$as_me:$LINENO: result: $JIKES_VERSION" >&5
-echo "${ECHO_T}$JIKES_VERSION" >&6
- else
- { echo "$as_me:$LINENO: WARNING: $JIKES_VERSION: jikes 1.19 or higher required" >&5
-echo "$as_me: WARNING: $JIKES_VERSION: jikes 1.19 or higher required" >&2;}
- fi
-
- JIKESENCODING=
- if test -n "`$JIKES --help 2>&1 | grep encoding`"; then
- JIKESENCODING='-encoding UTF-8'
- fi
-
-
- JIKESWARNINGS="+Pno-switchcheck"
- if test "x$JIKES_VERSION_MAJOR" = x"1" ; then
- if ! test "x$JIKES_VERSION_MINOR" = x"19"; then
- JIKESWARNINGS="$JIKESWARNINGS +Pno-shadow"
- fi
- fi
-
-
- fi
-
- fi
- fi
- user_specified_javac=jikes
-
-else
-
-
- if test "x" != x; then
- if test -f ""; then
- JIKES=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JIKES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JIKES in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JIKES="$JIKES" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JIKES="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JIKES=$ac_cv_path_JIKES
-
-if test -n "$JIKES"; then
- echo "$as_me:$LINENO: result: $JIKES" >&5
-echo "${ECHO_T}$JIKES" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""jikes"", so it can be a program name with args.
-set dummy "jikes"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JIKES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JIKES in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JIKES="$JIKES" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JIKES="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JIKES=$ac_cv_path_JIKES
-
-if test -n "$JIKES"; then
- echo "$as_me:$LINENO: result: $JIKES" >&5
-echo "${ECHO_T}$JIKES" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- if test "x$JIKES" != "x"; then
- echo "$as_me:$LINENO: checking jikes version" >&5
-echo $ECHO_N "checking jikes version... $ECHO_C" >&6
- JIKES_VERSION=`$JIKES --version | awk '/^Jikes Compiler/' | cut -d ' ' -f 5`
- JIKES_VERSION_MAJOR=`echo "$JIKES_VERSION" | cut -d '.' -f 1`
- JIKES_VERSION_MINOR=`echo "$JIKES_VERSION" | cut -d '.' -f 2`
- if expr "$JIKES_VERSION_MAJOR" = 1 > /dev/null; then
- if expr "$JIKES_VERSION_MINOR" \< 19 > /dev/null; then
- JIKES=""
- fi
- fi
- if test "x$JIKES" != "x"; then
- echo "$as_me:$LINENO: result: $JIKES_VERSION" >&5
-echo "${ECHO_T}$JIKES_VERSION" >&6
- else
- { echo "$as_me:$LINENO: WARNING: $JIKES_VERSION: jikes 1.19 or higher required" >&5
-echo "$as_me: WARNING: $JIKES_VERSION: jikes 1.19 or higher required" >&2;}
- fi
-
- JIKESENCODING=
- if test -n "`$JIKES --help 2>&1 | grep encoding`"; then
- JIKESENCODING='-encoding UTF-8'
- fi
-
-
- JIKESWARNINGS="+Pno-switchcheck"
- if test "x$JIKES_VERSION_MAJOR" = x"1" ; then
- if ! test "x$JIKES_VERSION_MINOR" = x"19"; then
- JIKESWARNINGS="$JIKESWARNINGS +Pno-shadow"
- fi
- fi
-
-
- fi
-
-
-fi;
-
-
-
-
-# Check whether --with-kjc or --without-kjc was given.
-if test "${with_kjc+set}" = set; then
- withval="$with_kjc"
-
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
-
- if test "x${withval}" != x; then
- if test -f "${withval}"; then
- KJC="${withval}"
- else
- # Extract the first word of ""${withval}"", so it can be a program name with args.
-set dummy "${withval}"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_KJC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $KJC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_KJC="$KJC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KJC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-KJC=$ac_cv_path_KJC
-
-if test -n "$KJC"; then
- echo "$as_me:$LINENO: result: $KJC" >&5
-echo "${ECHO_T}$KJC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""kJC"", so it can be a program name with args.
-set dummy "kJC"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_KJC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $KJC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_KJC="$KJC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KJC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-KJC=$ac_cv_path_KJC
-
-if test -n "$KJC"; then
- echo "$as_me:$LINENO: result: $KJC" >&5
-echo "${ECHO_T}$KJC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- else
- if test "x${withval}" != xno; then
-
- if test "x" != x; then
- if test -f ""; then
- KJC=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_KJC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $KJC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_KJC="$KJC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KJC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-KJC=$ac_cv_path_KJC
-
-if test -n "$KJC"; then
- echo "$as_me:$LINENO: result: $KJC" >&5
-echo "${ECHO_T}$KJC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""kJC"", so it can be a program name with args.
-set dummy "kJC"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_KJC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $KJC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_KJC="$KJC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KJC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-KJC=$ac_cv_path_KJC
-
-if test -n "$KJC"; then
- echo "$as_me:$LINENO: result: $KJC" >&5
-echo "${ECHO_T}$KJC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- fi
- fi
- user_specified_javac=kjc
-
-else
-
-
- if test "x" != x; then
- if test -f ""; then
- KJC=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_KJC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $KJC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_KJC="$KJC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KJC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-KJC=$ac_cv_path_KJC
-
-if test -n "$KJC"; then
- echo "$as_me:$LINENO: result: $KJC" >&5
-echo "${ECHO_T}$KJC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""kJC"", so it can be a program name with args.
-set dummy "kJC"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_KJC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $KJC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_KJC="$KJC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KJC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-KJC=$ac_cv_path_KJC
-
-if test -n "$KJC"; then
- echo "$as_me:$LINENO: result: $KJC" >&5
-echo "${ECHO_T}$KJC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
-
-fi;
-
-
-
-
-# Check whether --with-ecj or --without-ecj was given.
-if test "${with_ecj+set}" = set; then
- withval="$with_ecj"
-
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
-
- if test "x${withval}" != x; then
- if test -f "${withval}"; then
- ECJ="${withval}"
- else
- # Extract the first word of ""${withval}"", so it can be a program name with args.
-set dummy "${withval}"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ECJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $ECJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ECJ="$ECJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ECJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-ECJ=$ac_cv_path_ECJ
-
-if test -n "$ECJ"; then
- echo "$as_me:$LINENO: result: $ECJ" >&5
-echo "${ECHO_T}$ECJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""ecj"", so it can be a program name with args.
-set dummy "ecj"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ECJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $ECJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ECJ="$ECJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ECJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-ECJ=$ac_cv_path_ECJ
-
-if test -n "$ECJ"; then
- echo "$as_me:$LINENO: result: $ECJ" >&5
-echo "${ECHO_T}$ECJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- else
- if test "x${withval}" != xno; then
-
- if test "x" != x; then
- if test -f ""; then
- ECJ=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ECJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $ECJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ECJ="$ECJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ECJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-ECJ=$ac_cv_path_ECJ
-
-if test -n "$ECJ"; then
- echo "$as_me:$LINENO: result: $ECJ" >&5
-echo "${ECHO_T}$ECJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""ecj"", so it can be a program name with args.
-set dummy "ecj"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ECJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $ECJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ECJ="$ECJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ECJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-ECJ=$ac_cv_path_ECJ
-
-if test -n "$ECJ"; then
- echo "$as_me:$LINENO: result: $ECJ" >&5
-echo "${ECHO_T}$ECJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- fi
- fi
- user_specified_javac=ecj
-
-else
-
-
- if test "x" != x; then
- if test -f ""; then
- ECJ=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ECJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $ECJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ECJ="$ECJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ECJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-ECJ=$ac_cv_path_ECJ
-
-if test -n "$ECJ"; then
- echo "$as_me:$LINENO: result: $ECJ" >&5
-echo "${ECHO_T}$ECJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
- else
- # Extract the first word of ""ecj"", so it can be a program name with args.
-set dummy "ecj"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ECJ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $ECJ in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ECJ="$ECJ" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ECJ="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-ECJ=$ac_cv_path_ECJ
-
-if test -n "$ECJ"; then
- echo "$as_me:$LINENO: result: $ECJ" >&5
-echo "${ECHO_T}$ECJ" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
-
-fi;
-
-
-
-
-# Check whether --with-javac or --without-javac was given.
-if test "${with_javac+set}" = set; then
- withval="$with_javac"
-
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
-
- if test "x${withval}" != x; then
- JAVAC="${withval}"
- else
- # Extract the first word of ""javac"", so it can be a program name with args.
-set dummy "javac"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JAVAC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JAVAC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JAVAC=$ac_cv_path_JAVAC
-
-if test -n "$JAVAC"; then
- echo "$as_me:$LINENO: result: $JAVAC" >&5
-echo "${ECHO_T}$JAVAC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- else
- if test "x${withval}" != xno; then
-
- if test "x" != x; then
- JAVAC=""
- else
- # Extract the first word of ""javac"", so it can be a program name with args.
-set dummy "javac"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JAVAC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JAVAC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JAVAC=$ac_cv_path_JAVAC
-
-if test -n "$JAVAC"; then
- echo "$as_me:$LINENO: result: $JAVAC" >&5
-echo "${ECHO_T}$JAVAC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
- fi
- fi
- user_specified_javac=javac
-
-else
-
-
- if test "x" != x; then
- JAVAC=""
- else
- # Extract the first word of ""javac"", so it can be a program name with args.
-set dummy "javac"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JAVAC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JAVAC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JAVAC=$ac_cv_path_JAVAC
-
-if test -n "$JAVAC"; then
- echo "$as_me:$LINENO: result: $JAVAC" >&5
-echo "${ECHO_T}$JAVAC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
-
-
-fi;
-
-
-
- if test "x${user_specified_javac}" = x; then
-
-
-if test "x${GCJ}" != x; then
- FOUND_GCJ_TRUE=
- FOUND_GCJ_FALSE='#'
-else
- FOUND_GCJ_TRUE='#'
- FOUND_GCJ_FALSE=
-fi
-
-
-
-if test "x${JIKES}" != x; then
- FOUND_JIKES_TRUE=
- FOUND_JIKES_FALSE='#'
-else
- FOUND_JIKES_TRUE='#'
- FOUND_JIKES_FALSE=
-fi
-
-
-
-if test "x${ECJ}" != x; then
- FOUND_ECJ_TRUE=
- FOUND_ECJ_FALSE='#'
-else
- FOUND_ECJ_TRUE='#'
- FOUND_ECJ_FALSE=
-fi
-
-
-
-if test "x${JAVAC}" != x; then
- FOUND_JAVAC_TRUE=
- FOUND_JAVAC_FALSE='#'
-else
- FOUND_JAVAC_TRUE='#'
- FOUND_JAVAC_FALSE=
-fi
-
- else
-
-
-if test "x${user_specified_javac}" = xgcj; then
- FOUND_GCJ_TRUE=
- FOUND_GCJ_FALSE='#'
-else
- FOUND_GCJ_TRUE='#'
- FOUND_GCJ_FALSE=
-fi
-
-
-
-if test "x${user_specified_javac}" = xjikes; then
- FOUND_JIKES_TRUE=
- FOUND_JIKES_FALSE='#'
-else
- FOUND_JIKES_TRUE='#'
- FOUND_JIKES_FALSE=
-fi
-
-
-
-if test "x${user_specified_javac}" = xecj; then
- FOUND_ECJ_TRUE=
- FOUND_ECJ_FALSE='#'
-else
- FOUND_ECJ_TRUE='#'
- FOUND_ECJ_FALSE=
-fi
-
-
-
-if test "x${user_specified_javac}" = xjavac; then
- FOUND_JAVAC_TRUE=
- FOUND_JAVAC_FALSE='#'
-else
- FOUND_JAVAC_TRUE='#'
- FOUND_JAVAC_FALSE=
-fi
-
- fi
-
-
-if test "x${user_specified_javac}" = xkjc; then
- FOUND_KJC_TRUE=
- FOUND_KJC_FALSE='#'
-else
- FOUND_KJC_TRUE='#'
- FOUND_KJC_FALSE=
-fi
-
-
- ## GCJ LOCAL
- if test "x${GCJ}" = x && test "x${JIKES}" = x && test "x${ECJ}" = x \
- && test "x${JAVAC}" = x && test "x${user_specified_javac}" != xkjc
- then
- { { echo "$as_me:$LINENO: error: cannot find javac, try --with-ecj" >&5
-echo "$as_me: error: cannot find javac, try --with-ecj" >&2;}
- { (exit 1); exit 1; }; }
- fi
- ## END GCJ LOCAL
-
-
-
-
-# Check whether --with-classpath or --without-classpath was given.
-if test "${with_classpath+set}" = set; then
- withval="$with_classpath"
-
- if test "x${withval}" = xyes; then
- # set user classpath to CLASSPATH from env
- echo "$as_me:$LINENO: checking for classlib" >&5
-echo $ECHO_N "checking for classlib... $ECHO_C" >&6
- USER_CLASSLIB=${CLASSPATH}
-
- echo "$as_me:$LINENO: result: ${USER_CLASSLIB}" >&5
-echo "${ECHO_T}${USER_CLASSLIB}" >&6
- conditional_with_classlib=true
- elif test "x${withval}" != x && test "x${withval}" != xno; then
- # set user classpath to specified value
- echo "$as_me:$LINENO: checking for classlib" >&5
-echo $ECHO_N "checking for classlib... $ECHO_C" >&6
- USER_CLASSLIB=${withval}
-
- echo "$as_me:$LINENO: result: ${withval}" >&5
-echo "${ECHO_T}${withval}" >&6
- conditional_with_classlib=true
- fi
-
-else
- conditional_with_classlib=false
-fi;
-
-
-if test "x${conditional_with_classlib}" = xtrue; then
- USER_SPECIFIED_CLASSLIB_TRUE=
- USER_SPECIFIED_CLASSLIB_FALSE='#'
-else
- USER_SPECIFIED_CLASSLIB_TRUE='#'
- USER_SPECIFIED_CLASSLIB_FALSE=
-fi
-
-
-
-# Check whether --with-vm-classes or --without-vm-classes was given.
-if test "${with_vm_classes+set}" = set; then
- withval="$with_vm_classes"
- vm_classes="$with_vm_classes"
-else
- vm_classes='${top_srcdir}/vm/reference'
-fi;
-
-
-
-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then
- enableval="$enable_maintainer_mode"
- USE_MAINTAINER_MODE=$enableval
-else
- USE_MAINTAINER_MODE=no
-fi;
- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
-
-
-if test $USE_MAINTAINER_MODE = yes; then
- MAINTAINER_MODE_TRUE=
- MAINTAINER_MODE_FALSE='#'
-else
- MAINTAINER_MODE_TRUE='#'
- MAINTAINER_MODE_FALSE=
-fi
-
- MAINT=$MAINTAINER_MODE_TRUE
-
-
-
-# Check whether --enable-debug or --disable-debug was given.
-if test "${enable_debug+set}" = set; then
- enableval="$enable_debug"
- case "${enableval}" in
- yes)
- LIBDEBUG="true"
-
-cat >>confdefs.h <<\_ACEOF
-#define DEBUG 1
-_ACEOF
-
- ;;
- no) LIBDEBUG="false" ;;
- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-debug" >&5
-echo "$as_me: error: bad value ${enableval} for --enable-debug" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
-else
- LIBDEBUG="false"
-fi;
-
-
-# Check whether --enable-load-library or --disable-load-library was given.
-if test "${enable_load_library+set}" = set; then
- enableval="$enable_load_library"
- case "${enableval}" in
- yes) INIT_LOAD_LIBRARY="true" ;;
- no) INIT_LOAD_LIBRARY="false" ;;
- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-load-library" >&5
-echo "$as_me: error: bad value ${enableval} for --enable-load-library" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
-else
- INIT_LOAD_LIBRARY="true"
-fi;
-
-
-
-
-# Check whether --with-ecj-jar or --without-ecj-jar was given.
-if test "${with_ecj_jar+set}" = set; then
- withval="$with_ecj_jar"
- ECJ_JAR=$withval
-else
- if test -f $multi_basedir/ecj.jar; then
- ECJ_JAR='$(jardir)/ecj.jar'
- fi
-fi;
-
-
-# Check whether --enable-java-lang-system-explicit-initialization or --disable-java-lang-system-explicit-initialization was given.
-if test "${enable_java_lang_system_explicit_initialization+set}" = set; then
- enableval="$enable_java_lang_system_explicit_initialization"
- case "${enableval}" in
- yes|true) JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION="true" ;;
- no|false) JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION="false" ;;
- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-java-lang-system-explicit-initialization" >&5
-echo "$as_me: error: bad value ${enableval} for --enable-java-lang-system-explicit-initialization" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
-else
- JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION="false"
-fi;
-
-
-
-REMOVE=""
-
-
-# Extract the first word of "mkdir", so it can be a program name with args.
-set dummy mkdir; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_MKDIR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $MKDIR in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-MKDIR=$ac_cv_path_MKDIR
-
-if test -n "$MKDIR"; then
- echo "$as_me:$LINENO: result: $MKDIR" >&5
-echo "${ECHO_T}$MKDIR" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-# Extract the first word of "cp", so it can be a program name with args.
-set dummy cp; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_CP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $CP in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_CP="$CP" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-CP=$ac_cv_path_CP
-
-if test -n "$CP"; then
- echo "$as_me:$LINENO: result: $CP" >&5
-echo "${ECHO_T}$CP" >&6
+if test -n "$CP"; then
+ echo "$as_me:$LINENO: result: $CP" >&5
+echo "${ECHO_T}$CP" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
echo "${ECHO_T}${FASTJAR}" >&6
else
- # Extract the first word of "fastjar", so it can be a program name with args.
-set dummy fastjar; ac_word=$2
+ for ac_prog in fastjar gjar jar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_FASTJAR+set}" = set; then
echo "${ECHO_T}no" >&6
fi
+ test -n "$FASTJAR" && break
+done
+
fi;
if test x"${FASTJAR}" != x; then
ZIP=""
fi
+ # Check whether --enable-tools or --disable-tools was given.
+if test "${enable_tools+set}" = set; then
+ enableval="$enable_tools"
+ case "${enableval}" in
+ yes) TOOLSDIR="tools" ;;
+ no) TOOLSDIR="" ;;
+ *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-tools" >&5
+echo "$as_me: error: bad value ${enableval} for --enable-tools" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ TOOLSDIR="tools"
+fi;
+ if test "x${use_zip}" = xno && test "x${install_class_files}" = xno; then
+ TOOLSDIR=""
+ fi
+
+
if test "${with_jay+set}" = set; then
withval="$with_jay"
- if test -d "${withval}"; then
+ echo "$as_me:$LINENO: checking whether to regenerate parsers with jay" >&5
+echo $ECHO_N "checking whether to regenerate parsers with jay... $ECHO_C" >&6
+ JAY_FOUND=no
+ JAY_DIR_PATH=
+ if test "x${withval}" = xno; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ elif test "x${withval}" = xyes; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ JAY_DIR_PATH="/usr/share/jay"
+ elif test -d "${withval}"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
JAY_DIR_PATH="${withval}"
+ elif test -f "${withval}"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ JAY_DIR_PATH=`dirname "${withval}"`
+ JAY="${withval}"
+ else
+ { { echo "$as_me:$LINENO: error: jay not found at ${withval}" >&5
+echo "$as_me: error: jay not found at ${withval}" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ if test "x${JAY_DIR_PATH}" != x; then
# Extract the first word of "jay", so it can be a program name with args.
set dummy jay; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in ${JAY_DIR_PATH}
+as_dummy="${JAY_DIR_PATH}:${PATH}"
+for as_dir in $as_dummy
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
fi
if test "x${JAY}" = xno; then
- { { echo "$as_me:$LINENO: error: \"jay executable not found\"" >&5
-echo "$as_me: error: \"jay executable not found\"" >&2;}
+ { { echo "$as_me:$LINENO: error: jay executable not found" >&5
+echo "$as_me: error: jay executable not found" >&2;}
{ (exit 1); exit 1; }; };
fi
- else
- JAY_DIR_PATH=`dirname "${withval}"`
- JAY="${withval}"
-
- fi
- JAY_SKELETON="${JAY_DIR_PATH}/skeleton"
- as_ac_File=`echo "ac_cv_file_${JAY_SKELETON}" | $as_tr_sh`
+ JAY_SKELETON="${JAY_DIR_PATH}/skeleton"
+ as_ac_File=`echo "ac_cv_file_${JAY_SKELETON}" | $as_tr_sh`
echo "$as_me:$LINENO: checking for ${JAY_SKELETON}" >&5
echo $ECHO_N "checking for ${JAY_SKELETON}... $ECHO_C" >&6
if eval "test \"\${$as_ac_File+set}\" = set"; then
if test `eval echo '${'$as_ac_File'}'` = yes; then
:
else
- { { echo "$as_me:$LINENO: error: \"Expected skeleton file in \`dirname ${withval}\`\"" >&5
-echo "$as_me: error: \"Expected skeleton file in \`dirname ${withval}\`\"" >&2;}
+ { { echo "$as_me:$LINENO: error: Expected skeleton file in ${JAY_DIR_PATH}" >&5
+echo "$as_me: error: Expected skeleton file in ${JAY_DIR_PATH}" >&2;}
{ (exit 1); exit 1; }; }
fi
- JAY_FOUND=yes
+ JAY_FOUND=yes
+ fi
else
+ echo "$as_me:$LINENO: checking whether to regenerate parsers with jay" >&5
+echo $ECHO_N "checking whether to regenerate parsers with jay... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
JAY_FOUND=no
fi;
+# Check for javac if we need to build either the class library,
+# the examples or the tools
+if test "x${use_glibj_zip}" = xfalse || \
+ test "x${EXAMPLESDIR}" != x || \
+ test "x${TOOLSDIR}" != x && \
+ test "x${build_class_files}" != xno; then
+
+if test "x$JAVAPREFIX" = x; then
+ test "x$JAVAC" = x && for ac_prog in "ecj$EXEEXT -warn:-deprecation,serial,unusedImport" "ecj-3.3$EXEEXT -warn:-deprecation,serial,unusedImport" "ecj-3.2$EXEEXT -warn:-deprecation,serial,unusedImport" "javac$EXEEXT -Xlint:unchecked" "gcj$EXEEXT -C"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_JAVAC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$JAVAC"; then
+ ac_cv_prog_JAVAC="$JAVAC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_JAVAC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+JAVAC=$ac_cv_prog_JAVAC
+if test -n "$JAVAC"; then
+ echo "$as_me:$LINENO: result: $JAVAC" >&5
+echo "${ECHO_T}$JAVAC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$JAVAC" && break
+done
+
+else
+ test "x$JAVAC" = x && for ac_prog in "ecj$EXEEXT -warn:-deprecation,serial,unusedImport" "ecj-3.3$EXEEXT -warn:-deprecation,serial,unusedImport" "ecj-3.2$EXEEXT -warn:-deprecation,serial,unusedImport" "javac$EXEEXT -Xlint:unchecked" "gcj$EXEEXT -C"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_JAVAC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$JAVAC"; then
+ ac_cv_prog_JAVAC="$JAVAC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_JAVAC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+JAVAC=$ac_cv_prog_JAVAC
+if test -n "$JAVAC"; then
+ echo "$as_me:$LINENO: result: $JAVAC" >&5
+echo "${ECHO_T}$JAVAC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$JAVAC" && break
+done
+test -n "$JAVAC" || JAVAC="$JAVAPREFIX"
+
+fi
+test "x$JAVAC" = x && { { echo "$as_me:$LINENO: error: no acceptable Java compiler found in \$PATH" >&5
+echo "$as_me: error: no acceptable Java compiler found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+if test "$enable_java_maintainer_mode" = yes; then
+
+echo "$as_me:$LINENO: checking if $JAVAC works" >&5
+echo $ECHO_N "checking if $JAVAC works... $ECHO_C" >&6
+if test "${ac_cv_prog_javac_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+JAVA_TEST=Object.java
+CLASS_TEST=Object.class
+cat << \EOF > $JAVA_TEST
+/* #line 27957 "configure" */
+package java.lang;
+
+public class Object
+{
+ static <T> void doStuff()
+ {
+ }
+}
+EOF
+if { ac_try='$JAVAC $JAVA_TEST'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } >/dev/null 2>&1; then
+ ac_cv_prog_javac_works=yes
+else
+ { { echo "$as_me:$LINENO: error: The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)" >&5
+echo "$as_me: error: The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "configure: failed program was:" >&5
+ cat $JAVA_TEST >&5
+fi
+rm -f $JAVA_TEST $CLASS_TEST
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_javac_works" >&5
+echo "${ECHO_T}$ac_cv_prog_javac_works" >&6
+
+fi
+
+
+ JAVA_TEST=Test.java
+ CLASS_TEST=Test.class
+ cat << \EOF > $JAVA_TEST
+ /* #line 27993 "configure" */
+ public class Test
+ {
+ public static void main(String args)
+ {
+ System.out.println("Hello World");
+ }
+ }
+EOF
+ echo "$as_me:$LINENO: checking whether javac supports -J" >&5
+echo $ECHO_N "checking whether javac supports -J... $ECHO_C" >&6
+ $JAVAC $JAVACFLAGS -J-Xmx768M -sourcepath '' $JAVA_TEST
+ javac_result=$?
+ if test "x$javac_result" = "x0"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ JAVAC_MEM_OPT="-J-Xmx768M"
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ fi
+ rm -f $JAVA_TEST $CLASS_TEST
+
+
+fi
+
# Check whether --with-escher or --without-escher was given.
if test "${with_escher+set}" = set; then
- ac_config_files="$ac_config_files Makefile doc/Makefile doc/api/Makefile external/Makefile external/sax/Makefile external/w3c_dom/Makefile external/relaxngDatatype/Makefile external/jsr166/Makefile gnu/classpath/Configuration.java gnu/java/security/Configuration.java include/Makefile native/Makefile native/fdlibm/Makefile native/jawt/Makefile native/jni/Makefile native/jni/classpath/Makefile native/jni/java-io/Makefile native/jni/java-lang/Makefile native/jni/java-net/Makefile native/jni/java-nio/Makefile native/jni/java-util/Makefile native/jni/gtk-peer/Makefile native/jni/gconf-peer/Makefile native/jni/gstreamer-peer/Makefile native/jni/qt-peer/Makefile native/jni/xmlj/Makefile native/jni/midi-alsa/Makefile native/jni/midi-dssi/Makefile native/jni/native-lib/Makefile native/plugin/Makefile resource/Makefile resource/META-INF/services/java.util.prefs.PreferencesFactory resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader resource/META-INF/services/javax.sound.sampled.spi.MixerProvider scripts/Makefile scripts/classpath.spec lib/Makefile lib/gen-classlist.sh lib/copy-vmresources.sh tools/Makefile examples/Makefile examples/Makefile.jawt examples/Makefile.java2d"
+ ac_config_files="$ac_config_files Makefile doc/Makefile doc/api/Makefile external/Makefile external/sax/Makefile external/w3c_dom/Makefile external/relaxngDatatype/Makefile external/jsr166/Makefile gnu/classpath/Configuration.java gnu/java/security/Configuration.java include/Makefile native/Makefile native/fdlibm/Makefile native/jawt/Makefile native/jni/Makefile native/jni/classpath/Makefile native/jni/java-io/Makefile native/jni/java-lang/Makefile native/jni/java-net/Makefile native/jni/java-nio/Makefile native/jni/java-util/Makefile native/jni/gtk-peer/Makefile native/jni/gconf-peer/Makefile native/jni/gstreamer-peer/Makefile native/jni/qt-peer/Makefile native/jni/xmlj/Makefile native/jni/midi-alsa/Makefile native/jni/midi-dssi/Makefile native/jni/native-lib/Makefile native/plugin/Makefile resource/Makefile resource/META-INF/services/java.util.prefs.PreferencesFactory resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader resource/META-INF/services/javax.sound.sampled.spi.MixerProvider scripts/Makefile scripts/classpath.spec lib/Makefile lib/gen-classlist.sh lib/copy-vmresources.sh scripts/check_jni_methods.sh tools/Makefile examples/Makefile examples/Makefile.jawt examples/Makefile.java2d"
if test "x${COMPILE_WRAPPERS}" = xno
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
-if test -z "${FOUND_GCJ_TRUE}" && test -z "${FOUND_GCJ_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_GCJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_GCJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_JIKES_TRUE}" && test -z "${FOUND_JIKES_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_JIKES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_JIKES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_ECJ_TRUE}" && test -z "${FOUND_ECJ_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_ECJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_ECJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_JAVAC_TRUE}" && test -z "${FOUND_JAVAC_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_JAVAC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_JAVAC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_GCJ_TRUE}" && test -z "${FOUND_GCJ_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_GCJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_GCJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_JIKES_TRUE}" && test -z "${FOUND_JIKES_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_JIKES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_JIKES\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_ECJ_TRUE}" && test -z "${FOUND_ECJ_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_ECJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_ECJ\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_JAVAC_TRUE}" && test -z "${FOUND_JAVAC_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_JAVAC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_JAVAC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${FOUND_KJC_TRUE}" && test -z "${FOUND_KJC_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_KJC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_KJC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${USER_SPECIFIED_CLASSLIB_TRUE}" && test -z "${USER_SPECIFIED_CLASSLIB_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"USER_SPECIFIED_CLASSLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"USER_SPECIFIED_CLASSLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
} >&5
cat >&5 <<_CSEOF
-This file was extended by GNU Classpath $as_me 0.96-pre, which was
+This file was extended by GNU Classpath $as_me 0.97.2, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-GNU Classpath config.status 0.96-pre
+GNU Classpath config.status 0.97.2
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
"lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"lib/gen-classlist.sh" ) CONFIG_FILES="$CONFIG_FILES lib/gen-classlist.sh" ;;
"lib/copy-vmresources.sh" ) CONFIG_FILES="$CONFIG_FILES lib/copy-vmresources.sh" ;;
+ "scripts/check_jni_methods.sh" ) CONFIG_FILES="$CONFIG_FILES scripts/check_jni_methods.sh" ;;
"tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
"examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
"examples/Makefile.jawt" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile.jawt" ;;
s,@PLUGIN_DIR@,$PLUGIN_DIR,;t t
s,@USER_JAVAH@,$USER_JAVAH,;t t
s,@CLASSPATH_INCLUDES@,$CLASSPATH_INCLUDES,;t t
-s,@GCJ@,$GCJ,;t t
-s,@JIKES@,$JIKES,;t t
-s,@JIKESENCODING@,$JIKESENCODING,;t t
-s,@JIKESWARNINGS@,$JIKESWARNINGS,;t t
-s,@KJC@,$KJC,;t t
-s,@ECJ@,$ECJ,;t t
-s,@JAVAC@,$JAVAC,;t t
-s,@FOUND_GCJ_TRUE@,$FOUND_GCJ_TRUE,;t t
-s,@FOUND_GCJ_FALSE@,$FOUND_GCJ_FALSE,;t t
-s,@FOUND_JIKES_TRUE@,$FOUND_JIKES_TRUE,;t t
-s,@FOUND_JIKES_FALSE@,$FOUND_JIKES_FALSE,;t t
-s,@FOUND_ECJ_TRUE@,$FOUND_ECJ_TRUE,;t t
-s,@FOUND_ECJ_FALSE@,$FOUND_ECJ_FALSE,;t t
-s,@FOUND_JAVAC_TRUE@,$FOUND_JAVAC_TRUE,;t t
-s,@FOUND_JAVAC_FALSE@,$FOUND_JAVAC_FALSE,;t t
-s,@FOUND_KJC_TRUE@,$FOUND_KJC_TRUE,;t t
-s,@FOUND_KJC_FALSE@,$FOUND_KJC_FALSE,;t t
-s,@USER_CLASSLIB@,$USER_CLASSLIB,;t t
-s,@USER_SPECIFIED_CLASSLIB_TRUE@,$USER_SPECIFIED_CLASSLIB_TRUE,;t t
-s,@USER_SPECIFIED_CLASSLIB_FALSE@,$USER_SPECIFIED_CLASSLIB_FALSE,;t t
s,@vm_classes@,$vm_classes,;t t
s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
s,@BUILD_CLASS_FILES_TRUE@,$BUILD_CLASS_FILES_TRUE,;t t
s,@BUILD_CLASS_FILES_FALSE@,$BUILD_CLASS_FILES_FALSE,;t t
s,@EXAMPLESDIR@,$EXAMPLESDIR,;t t
+s,@TOOLSDIR@,$TOOLSDIR,;t t
s,@GJDOC@,$GJDOC,;t t
s,@CREATE_API_DOCS_TRUE@,$CREATE_API_DOCS_TRUE,;t t
s,@CREATE_API_DOCS_FALSE@,$CREATE_API_DOCS_FALSE,;t t
s,@USE_PREBUILT_GLIBJ_ZIP_TRUE@,$USE_PREBUILT_GLIBJ_ZIP_TRUE,;t t
s,@USE_PREBUILT_GLIBJ_ZIP_FALSE@,$USE_PREBUILT_GLIBJ_ZIP_FALSE,;t t
s,@PATH_TO_GLIBJ_ZIP@,$PATH_TO_GLIBJ_ZIP,;t t
+s,@JAVAC@,$JAVAC,;t t
+s,@JAVAC_MEM_OPT@,$JAVAC_MEM_OPT,;t t
s,@USE_ESCHER_TRUE@,$USE_ESCHER_TRUE,;t t
s,@USE_ESCHER_FALSE@,$USE_ESCHER_FALSE,;t t
s,@PATH_TO_ESCHER@,$PATH_TO_ESCHER,;t t
dnl define([AC_CACHE_LOAD], )dnl
dnl define([AC_CACHE_SAVE], )dnl
-AC_INIT([GNU Classpath],[0.96-pre],[classpath@gnu.org],[classpath])
+AC_INIT([GNU Classpath],[0.97.2],[classpath@gnu.org],[classpath])
AC_CONFIG_SRCDIR(java/lang/System.java)
dnl GCJ LOCAL
dnl Regenerate headers at build time (disabled by default)
dnl -----------------------------------------------------------
AC_ARG_ENABLE([regen-headers],
- [AS_HELP_STRING(--enable-regen-headers,automatically regenerate JNI headers [default=no])],
+ [AS_HELP_STRING(--enable-regen-headers,automatically regenerate JNI headers [default=yes if headers don't exist])],
[case "${enableval}" in
yes) REGENERATE_JNI_HEADERS=yes ;;
no) REGENERATE_JNI_HEADERS=no ;;
- *) REGENERATE_JNI_HEADERS=no ;;
+ *) REGENERATE_JNI_HEADERS=yes ;;
esac],
- [REGENERATE_JNI_HEADERS=no])
+ [if test -e include/java_lang_VMSystem.h; then
+ REGENERATE_JNI_HEADERS=no ;
+ else
+ REGENERATE_JNI_HEADERS=yes ;
+ fi])
AM_CONDITIONAL(CREATE_JNI_HEADERS, test "x${REGENERATE_JNI_HEADERS}" = xyes)
dnl -----------------------------------------------------------
dnl On that system, sys/ioctl.h will not include sys/filio.h unless
dnl BSD_COMP is defined; just including sys/filio.h is simpler.
dnl Check for crt_externs.h on Darwin.
+ dnl Check for netinet/in_systm.h, netinet/ip.h and net/if.h for Windows CE.
+ dnl Check for sys/loadavg.h for getloadavg() on Solaris 9.
AC_CHECK_HEADERS([unistd.h sys/types.h sys/config.h sys/ioctl.h \
asm/ioctls.h \
inttypes.h stdint.h utime.h sys/utime.h sys/filio.h \
sys/mman.h \
magic.h \
sys/event.h sys/epoll.h \
- ifaddrs.h])
+ ifaddrs.h \
+ netinet/in_systm.h netinet/ip.h net/if.h \
+ sys/loadavg.h])
AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
gethostbyname_r localtime_r \
strerror_r \
fcntl \
+ statvfs \
mmap munmap mincore msync madvise getpagesize sysconf \
lstat readlink \
inet_aton inet_addr inet_pton \
getifaddrs kqueue kevent epoll_create \
- readdir_r getloadavg])
+ getloadavg])
LIBMAGIC=
AC_CHECK_LIB(magic, magic_open, LIBMAGIC=-lmagic)
if test "$no_x" = yes; then
AC_MSG_ERROR([GTK+ peers requested but no X library available])
fi
- dnl We explicitly want the XTest Extension for Robot support.
+ dnl Check if we can link against the XTest library and set
+ dnl HAVE_XTEST accordingly.
AC_CHECK_LIB([Xtst], [XTestQueryExtension],
- [XTEST_LIBS="$XTEST_LIBS -lX11 -lXtst"],
- [AC_MSG_ERROR([libXtst NOT found, required for GdkRobot])],
- [${X_LIBS}])
+ [AC_DEFINE(HAVE_XTEST, 1, [Define to 1 if you have libXtst.])[XTEST_LIBS="$XTEST_LIBS -X11 -lXtst"]],
+ [true],
+ [${X_LIBS}])
+
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.8 gthread-2.0 >= 2.2 gdk-pixbuf-2.0)
PKG_CHECK_MODULES(FREETYPE2, freetype2)
dnl compiled in
USE_GCONF_PREFS_PEER=$enable_default_preferences_peer
if test "$USE_GCONF_PREFS_PEER" = ""; then
- DEFAULT_PREFS_PEER=gnu.java.util.prefs.GConfBasedFactory
+ DEFAULT_PREFS_PEER=gnu.java.util.prefs.GConfBasedFactory
fi
fi
GST_PLUGIN_LDFLAGS='-module -avoid-version -Wno-unused-parameter -no-undefined'
AC_SUBST(GST_PLUGIN_LDFLAGS)
+
+ PKG_CHECK_MODULES(GDK, gdk-2.0 >= 2.8)
+ AC_SUBST(GDK_CFLAGS)
+ AC_SUBST(GDK_LIBS)
dnl set the gstreamer based file reader, writer and mixer
GSTREAMER_FILE_READER=gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReader
AC_CONFIG_LINKS([$ac_config_links_1])
fi
-CLASSPATH_FIND_JAVAC
-
CLASSPATH_WITH_CLASSLIB
dnl -----------------------------------------------------------
AM_CONDITIONAL(USE_PREBUILT_GLIBJ_ZIP, test x$use_glibj_zip = xtrue)
AC_SUBST(PATH_TO_GLIBJ_ZIP)
+# Check for javac if we need to build either the class library,
+# the examples or the tools
+if test "x${use_glibj_zip}" = xfalse || \
+ test "x${EXAMPLESDIR}" != x || \
+ test "x${TOOLSDIR}" != x && \
+ test "x${build_class_files}" != xno; then
+ AC_PROG_JAVAC
+ CLASSPATH_JAVAC_MEM_CHECK
+fi
+
dnl -----------------------------------------------------------
dnl Build with Escher based X peers.
dnl -----------------------------------------------------------
lib/Makefile
lib/gen-classlist.sh
lib/copy-vmresources.sh
+scripts/check_jni_methods.sh
tools/Makefile
examples/Makefile
examples/Makefile.jawt
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2005-07-09.11
+scriptversion=2007-03-29.01
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 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
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
stat=$?
if test $stat -eq 0; then :
else
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
- if test -f "$tmpdepfile"; then :
- else
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
- tmpdepfile="$stripped.u"
- fi
-
if test $stat -eq 0; then :
else
- rm -f "$tmpdepfile"
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
if test -f "$tmpdepfile"; then
- outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
rm -f "$tmpdepfile"
;;
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
- # static library. This mecanism is used in libtool 1.4 series to
+ # static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in in $dir.libs/$base.o.d and
+ # compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
noinst_DATA = html
endif
-sourcepath = $(top_builddir):$(top_srcdir):$(top_srcdir)/vm/reference:$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax
+sourcepath = $(top_builddir):$(top_srcdir):$(top_srcdir)/vm/reference:$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/jsr166
classpathbox = "<span class='logo'><a href='http://www.gnu.org/software/classpath' target='_top'>GNU Classpath</a> ($(VERSION))"
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
@CREATE_API_DOCS_TRUE@noinst_DATA = html
-sourcepath = $(top_builddir):$(top_srcdir):$(top_srcdir)/vm/reference:$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax
+sourcepath = $(top_builddir):$(top_srcdir):$(top_srcdir)/vm/reference:$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/jsr166
classpathbox = "<span class='logo'><a href='http://www.gnu.org/software/classpath' target='_top'>GNU Classpath</a> ($(VERSION))"
all: all-am
@comment node-name, next, previous, up
@chapter Introduction
-The GNU Classpath Project is a dedicated to providing a 100% free,
+The GNU Classpath Project is dedicated to providing a 100% free,
clean room implementation of the standard core class libraries for
compilers and runtime environments for the java programming language.
It offers free software developers an alternative core library
implementation upon which larger java-like programming environments
-can be build. The GNU Classpath Project was started in the Spring of
+can be built. The GNU Classpath Project was started in the Spring of
1998 as an official Free Software Foundation project. Most of the
volunteers working on GNU Classpath do so in their spare time, but a
couple of projects based on GNU Classpath have paid programmers to
Without those classes, the public socket interface is useless. But do
not feel obligated to completely implement all of the functionality at
once. For example, in the java.net package, there are different types
-of protocol handlers for different types of URL's. Not all of these
+of protocol handlers for different types of URLs. Not all of these
need to be written at once.
@item
can shift depending on whether or not there is a volunteer to port
Classpath to those platforms and to test releases.
-Eventually we hope the Classpath will support all JVM's that provide
-JNI or CNI support. However, the top priority is free JVM's. A small
+Eventually we hope the Classpath will support all JVMs that provide
+JNI or CNI support. However, the top priority is free JVMs. A small
list of Compiler/VM environments that are currently actively
incorporating GNU Classpath is below. A more complete overview of
projects based on GNU classpath can be found online at
@item
@uref{http://jamvm.sourceforge.net/,jamvm}
@item
-@uref{http://kissme.sourceforge.net/,Kissme}
+@uref{http://www.cacaojvm.org/,cacao}
@item
-@uref{http://www.ibm.com/developerworks/oss/jikesrvm/,Jikes RVM}
-@item
-@uref{http://www.sablevm.org/,SableVM}
+@uref{http://jikesrvm.org,Jikes RVM}
@item
@uref{http://www.kaffe.org/,Kaffe}
+@item
+@uref{http://www.ikvm.net/,IKVM}
@end enumerate
As with OS platform support, this priority list could change if a
volunteer comes forward to port, maintain, and test releases for a
particular JVM@. Since gcj is part of the GNU Compiler Collective it
is one of the most important targets. But since it doesn't currently
-work out of the box with GNU Classpath it is currently not the easiest
-target. When hacking on GNU Classpath the easiest is to use
-compilers and runtime environments that that work out of the box with
-it, such as the jikes compiler and the runtime environments jamvm and
-kissme. But you can also work directly with targets like gcj and
-kaffe that have their own copy of GNU Classpath currently. In that
-case changes have to be merged back into GNU Classpath proper though,
-which is sometimes more work. SableVM is starting to migrate from an
-integrated GNU Classpath version to being usable with GNU Classpath
-out of the box.
-
-
-The initial target version for Classpath is the 1.1 spec. Higher
-versions can be implemented (and have been implemented, including lots
-of 1.4 functionality) if desired, but please do not create classes
-that depend on features in those packages unless GNU Classpath already
+work out of the box with GNU Classpath it is not the easiest
+target. When hacking on GNU Classpath the easiest solution is to use
+compilers and runtime environments that work out of the box with
+it, such as the Eclipse compiler, ecj, and the runtime environments jamvm and
+cacao. Both Jikes RVM and Kaffe use an included version of GNU Classpath by
+default, but Kaffe can now use a pre-installed version and Jikes RVM supports
+using a CVS snapshot as well as the latest release. Working directly with
+targets such as Jikes RVM, gcj and IKVM is possible but can be a little more
+difficult as changes have to be merged back into GNU Classpath proper,
+which requires additional work. Due to a recent switch to the use of 1.5 language
+features within GNU Classpath, a compiler compatible with these features is required.
+At present, this includes the Eclipse compiler, ecj, and the OpenJDK compiler.
+
+GNU Classpath currently implements the majority of the 1.4 and 1.5 APIs
+(binary compatibility is above 95% for both, but does not take into account
+internal implementations of features such as graphic and sound support). There
+is support for some 1.6 APIs but this is still nascent. Please do not create classes
+that depend on features in other packages unless GNU Classpath already
contains those features. GNU Classpath has been free of any
proprietary dependencies for a long time now and we like to keep it
-that way. But finishing, polishing up, documenting, testing and
+that way. Finishing, polishing up, documenting, testing and
debugging current functionality is of higher priority then adding new
functionality.
@chapter Needed Tools and Libraries
If you want to hack on Classpath, you should at least download and
-install the following tools. And try to familiarize yourself with
-them. Although in most cases having these tools installed will be all
+install the following tools and try to familiarize yourself with
+them. In most cases having these tools installed will be all
you really need to know about them. Also note that when working on
-(snapshot) releases only GCC 3.3+ (plus a free VM from the list above
-and the libraries listed below) is needed. The other tools are only
+(snapshot) releases only a 1.5 compiler (plus a free VM from the list above
+and the libraries listed below) is required. The other tools are only
needed when working directly on the CVS version.
@itemize @bullet
For building the Java bytecode (.class files), you can select
which compiler should be employed using @option{--with-javac} or
-@option{--with-ecj} as argument to @command{configure};
-the present default is @command{ecj}.
+@option{--with-ecj} as an argument to @command{configure};
+the present default is @command{ecj} if found.
Instead of @command{ecj}, you can also use @command{javac}, which is
available at
@end table
+The GStreamer backend for javax.sound.sampled (The Java Sound API, not
+including the MIDI portion) needs the following library headers:
+
+@table @b
+@item GStreamer
+@uref{http://gstreamer.freedesktop.org/,GStreamer} version 0.10.10
+(or higher). You will also need at least gstreamer-base and
+gstreamer-plugins-base. More plugins can be used to allow streaming of
+different sound types but are not a compile time requirement. See
+README.gstreamer in the source distribution for more informations.
+
+@end table
+
For building @command{gcjwebplugin} you'll need the Mozilla plugin
support headers and libraries, which are available at
@uref{http://www.mozilla.org,www.mozilla.org}.
For enabling the com.sun.tools.javac support in tools.zip you
-will a need jar file containing the Eclipse Java Compiler.
+will need a jar file containing the Eclipse Java Compiler.
Otherwise com.sun.tools.javac will not be included in @file{tools.zip}.
For building the xmlj JAXP implementation (disabled by default,
to provide certain needed functionality. All these external libraries
should be clearly marked as such. In general we try to use as much as
possible the clean upstream versions of these sources. That way
-merging in new versions will be easiest. You should always try to get
+merging in new versions will be easier. You should always try to get
bug fixes to these files accepted upstream first. Currently we
include the following 'external' libraries. Most of these sources are
included in the @file{external} directory. That directory also
@table @b
-@item GNU jaxp
-Can be found in @file{external/jaxp}. Provides javax.xml, org.w3c and
-org.xml packages. Upstream is
-@uref{http://www.gnu.org/software/classpathx/,GNU ClasspathX}.
+@item JSR166 concurrency support
+Can be found in @file{external/jsr166}. Provides java.util.concurrent
+and its subpackages. Upstream is
+@uref{http://g.oswego.edu/dl/concurrency-interest/,Doug Lea's Concurrency Interest Site}.
+
+@item RelaxNG Datatype Interfaces
+Can be found in @file{external/relaxngDatatype}. Provides org.relaxng.datatype
+and its subpackages. Upstream is
+@uref{http://www.oasis-open.org/committees/relax-ng/}.
+
+@item Simple API for XML (SAX)
+Can be found in @file{external/sax}. Provides org.xml.sax and its subpackages.
+Upstream is
+@uref{http://www.saxproject.org}.
+
+@item Document Object Model (DOM) bindings
+Can be found in @file{external/w3c_dom}. Provides org.w3c.dom and its subpackages.
+Upstream locations are listed in @file{external/w3c_dom/README}.
@item fdlibm
Can be found in @file{native/fdlibm}. Provides native implementations
specify jar file containing the Eclipse Java Compiler
+@item --with-gstreamer-peer
+
+build the experimental GStreamer peer (see @file{README.gstreamer})
+
@end table
For more flags run @command{configure --help}.
little and shouldn't be used by ordinary developers or users anyway.
On Windows machines, the native libraries do not currently build, but
-the Java bytecode library will. Gcj trunk is beginning to work under
+the Java bytecode library will. GCJ trunk is beginning to work under
Cygwin.
@node Programming Standards, Hacking Code, Misc. Notes, Top
patches require you to think whether or not they are really OK and
non-controversial, or if you would like some feedback first on them
before committing. We might get real commit rules in the future, for
-now use your own judgment, but be a bit conservative.
+now use your own judgement, but be a bit conservative.
Always contact the GNU Classpath maintainer before adding anything
non-trivial that you didn't write yourself and that does not come from
of doubles.
@itemize @bullet
-@item @code{doubleToLongBits(double)} -- Converts the double to the IEEE 754
-bit layout, collapsing NaNs to @code{0x7ff8000000000000L}.
-@item @code{doubleToRawLongBits(double)} -- Same as the above, but preserves
-NaNs.
+@item @code{doubleToRawLongBits(double)} -- Converts the double to the IEEE 754
+bit layout, preserving NaNs.
@item @code{longBitsToDouble(long)} -- This is the inverse of the last method,
preserving NaNs so that the output of one can be fed into the other without
data loss.
@code{VMFloat} provides native support for the conversion of floats.
@itemize @bullet
-@item @code{floatToIntBits(float)} -- Converts the float to the IEEE 754
-bit layout, collapsing NaNs to @code{0x7fc00000}.
-@item @code{floatToRawIntBits(float)} -- Same as the above, but preserves
-NaNs.
+@item @code{floatToRawIntBits(float)} -- Converts the float to the IEEE 754
+bit layout, preserving NaNs.
@item @code{intBitsToFloat(int)} -- This is the inverse of the last method,
preserving NaNs so that the output of one can be fed into the other without
data loss.
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2005-07-05.19}
+\def\texinfoversion{2007-12-02.17}
%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
-% Foundation, Inc.
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 Free Software Foundation, Inc.
%
-% This texinfo.tex file is free software; you can redistribute it and/or
+% 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
-% published by the Free Software Foundation; either version 2, or (at
-% your option) any later version.
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
%
% This texinfo.tex file is distributed in the hope that it will be
% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
% General Public License for more details.
%
% You should have received a copy of the GNU General Public License
-% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-% Boston, MA 02110-1301, USA.
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
%
% As a special exception, when this file is read by TeX when processing
% a Texinfo source document, you may use the result without
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
-\message{Basics,}
+
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-% In some macros, we cannot use the `\? notation---the left quote is
-% in some cases the escape char.
-\chardef\backChar = `\\
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
\chardef\colonChar = `\:
\chardef\commaChar = `\,
+\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
-\chardef\plusChar = `\+
+\chardef\lquoteChar= `\`
\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
\chardef\underChar = `\_
-\chardef\spaceChar = `\ %
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode\spaceChar=\spacecat}
-
-{% for help with debugging.
- % example usage: \expandafter\show\activebackslash
- \catcode`\! = 0 \catcode`\\ = \active
- !global!def!activebackslash{\}
-}
-
% Ignore a token.
%
\def\gobble#1{}
\newdimen\cornerthick \cornerthick=.3pt
\newdimen\topandbottommargin \topandbottommargin=.75in
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page. The solution is
+% described on page 260 of The TeXbook. It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after. I won't pretend I can describe this better than DEK...
+\def\domark{%
+ \toks0=\expandafter{\lastchapterdefs}%
+ \toks2=\expandafter{\lastsectiondefs}%
+ \toks4=\expandafter{\prevchapterdefs}%
+ \toks6=\expandafter{\prevsectiondefs}%
+ \toks8=\expandafter{\lastcolordefs}%
+ \mark{%
+ \the\toks0 \the\toks2
+ \noexpand\or \the\toks4 \the\toks6
+ \noexpand\else \the\toks8
+ }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+ \ifcase0\topmark\fi
+ \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
% Main output routine.
\chardef\PAGE = 255
\output = {\onepageout{\pagecontents\PAGE}}
%
% Do this outside of the \shipout so @code etc. will be expanded in
% the headline as they should be, not taken literally (outputting ''code).
+ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
\setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
\setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
%
{%
% before the \shipout runs.
%
\indexdummies % don't expand commands in the output.
+ \normalturnoffactive % \ in index entries must not stay \, e.g., if
+ % the page break happens to be in the middle of an example.
+ % We don't want .vr (or whatever) entries like this:
+ % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+ % "\acronym" won't work when it's read back in;
+ % it needs to be
+ % {\code {{\tt \backslashcurfont }acronym}
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
\pagebody{#1}%
\ifdim\ht\footlinebox > 0pt
% Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingxxx.)
+ % (We lessened \vsize for it in \oddfootingyyy.)
% The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 2\baselineskip
+ \vskip 24pt
\unvbox\footlinebox
\fi
%
% marginal hacks, juha@viisa.uucp (Juha Takala)
\ifvoid\margin\else % marginal info is present
\rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
+\dimen@=\dp#1\relax \unvbox#1\relax
\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
}
%
\def\parsearg{\parseargusing{}}
\def\parseargusing#1#2{%
- \def\next{#2}%
+ \def\argtorun{#2}%
\begingroup
\obeylines
\spaceisspace
\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
\def\temp{#3}%
\ifx\temp\empty
- % We cannot use \next here, as it holds the macro to run;
- % thus we reuse \temp.
+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
\let\temp\finishparsearg
\else
\let\temp\argcheckspaces
% If a _delimited_ argument is enclosed in braces, they get stripped; so
% to get _exactly_ the rest of the line, we had to prevent such situation.
% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \next.
+% just before passing the control to \argtorun.
% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
% either the null string, or it ends with \^^M---thus there is no danger
% that a pair of braces would be stripped.
%
% But first, we have to remove the trailing space token.
%
-\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
% \parseargdef\foo{...}
% is roughly equivalent to
% _ active, and distinguish by seeing if the current family is \slfam,
% which is what @var uses.
{
- \catcode\underChar = \active
+ \catcode`\_ = \active
\gdef\mathunderscore{%
- \catcode\underChar=\active
+ \catcode`\_=\active
\def_{\ifnum\fam=\slfam \_\else\sb\fi}%
}
}
\def\minus{$-$}
% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
+% 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
- \hbox to 1.5em{%
- \hskip 0pt plus 0.25fil
- .\hfil.\hfil.%
- \hskip 0pt plus 0.5fil
+ \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
}%
}
\fi
\fi
-% PDF uses PostScript string constants for the names of xref targets, to
+% PDF uses PostScript string constants for the names of xref targets,
% 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 we do).
+% that's what we do).
% double active backslashes.
%
{\catcode`\@=0 \catcode`\\=\active
- @gdef@activebackslash{@catcode`@\=@active @otherbackslash}
@gdef@activebackslashdouble{%
- @catcode@backChar=@active
+ @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. I've
-% tinkered with it a little for texinfo, but it's definitely from there.
+% 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.
\def\backslashparens#1{%
\xdef#1{#1}% redefine it as its expansion; the definition is simply
% \lastnode when called from \setref -> \pdfmkdest.
- \HyPsdSubst{(}{\backslashlparen}{#1}%
- \HyPsdSubst{)}{\backslashrparen}{#1}%
+ \HyPsdSubst{(}{\realbackslash(}{#1}%
+ \HyPsdSubst{)}{\realbackslash)}{#1}%
}
-{\catcode\exclamChar = 0 \catcode\backChar = \other
- !gdef!backslashlparen{\(}%
- !gdef!backslashrparen{\)}%
-}
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found. (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
\ifpdf
- \input pdfcolor
- \pdfcatalog{/PageMode /UseOutlines}%
+ %
+ % Color manipulation macros based on pdfcolor.tex.
+ \def\cmykDarkRed{0.28 1 1 0.35}
+ \def\cmykBlack{0 0 0 1}
+ %
+ \def\pdfsetcolor#1{\pdfliteral{#1 k}}
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\cmykBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
+ %
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}%
- \def\imageheight{#3}%
+ \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.
+ \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
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{pdf}%
+ \fi
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
+ \fi
+ \else \gdef\pdfimgext{jpg}%
+ \fi
+ \else \gdef\pdfimgext{png}%
+ \fi
+ \closein 1
+ \endgroup
+ %
% without \immediate, pdftex seg faults when the same image is
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
\ifnum\pdftexversion < 14
\else
\immediate\pdfximage
\fi
- \ifx\empty\imagewidth\else width \imagewidth \fi
- \ifx\empty\imageheight\else height \imageheight \fi
+ \ifdim \wd0 >0pt width \imagewidth \fi
+ \ifdim \wd2 >0pt height \imageheight \fi
\ifnum\pdftexversion<13
- #1.pdf%
+ #1.\pdfimgext
\else
- {#1.pdf}%
+ {#1.\pdfimgext}%
\fi
\ifnum\pdftexversion < 14 \else
\pdfrefximage \pdflastximage
\fi}
+ %
\def\pdfmkdest#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
- \atdummies
+ \indexnofonts
+ \turnoffactive
\activebackslashdouble
+ \makevalueexpandable
\def\pdfdestname{#1}%
\backslashparens\pdfdestname
- \pdfdest name{\pdfdestname} xyz%
- }}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }}
%
% used to mark target names; must be expandable.
- \def\pdfmkpgn#1{#1}%
+ \def\pdfmkpgn#1{#1}
+ %
+ % by default, use a color that is dark enough to print on paper as
+ % nearly black, but still distinguishable for online viewing.
+ \def\urlcolor{\cmykDarkRed}
+ \def\linkcolor{\cmykDarkRed}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
%
- \let\linkcolor = \Blue % was Cyan, but that seems light?
- \def\endlink{\Black\pdfendlink}
% Adding outlines to PDF; macros for calculating structure of outlines
% come from Petr Olsak
\def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
% now, I guess we'll just let the pdf reader have its way.
\indexnofonts
\setupdatafile
- \activebackslash
- \input \jobname.toc
+ \catcode`\\=\active \otherbackslash
+ \input \tocreadfilename
\endgroup
}
%
\else
\let \startlink \pdfstartlink
\fi
+ % make a live url in pdf output.
\def\pdfurl#1{%
\begingroup
- \normalturnoffactive\def\@{@}%
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
\makevalueexpandable
- \leavevmode\Red
+ \leavevmode\setcolor{\urlcolor}%
\startlink attr{/Border [0 0 0]}%
user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
\endgroup}
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
\def\pdflink#1{%
\startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
- \linkcolor #1\endlink}
+ \setcolor{\linkcolor}#1\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
\else
\let\pdfmkdest = \gobble
\let\pdfurl = \gobble
\let\endlink = \relax
- \let\linkcolor = \relax
+ \let\setcolor = \gobble
+ \let\pdfsetcolor = \gobble
\let\pdfmakeoutlines = \relax
\fi % \ifx\pdfoutput
% We don't need math for this font style.
\def\ttsl{\setfontstyle{ttsl}}
+
% Default leading.
\newdimen\textleading \textleading = 13.2pt
\def\strutheightpercent{.70833}
\def\strutdepthpercent {.29167}
%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
\def\setleading#1{%
- \normalbaselineskip = #1\relax
+ \dimen0 = #1\relax
+ \normalbaselineskip = \baselinefactor\dimen0
\normallineskip = \lineskipfactor\normalbaselineskip
\normalbaselines
\setbox\strutbox =\hbox{%
}%
}
+% PDF CMaps. See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% 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
+ \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
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1IT
+ \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
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1TT
+ \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
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+\fi\fi
+
+
% Set the font macro #1 to the font named #2, adding on the
% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+ \font#1=\fontprefix#2#3 scaled #4
+ \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
\def\scshape{csc}
\def\scbshape{csc}
+% Definitions for a main text size of 11pt. This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
% Text fonts (11.2pt, magstep1).
\def\textnominalsize{11pt}
\edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
\font\texti=cmmi10 scaled \mainmagstep
\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}
-\setfont\deftt\ttshape{10}{\magstep1}
-\setfont\defttsl\ttslshape{10}{\magstep1}
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
\font\smalli=cmmi9
\font\smallsy=cmsy9
+\def\smallecsize{0900}
% Fonts for small examples (8pt).
\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
\font\smalleri=cmmi8
\font\smallersy=cmsy8
+\def\smallerecsize{0800}
% Fonts for title page (20.4pt):
\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
\def\authorrm{\secrm}
\def\authortt{\sectt}
+\def\titleecsize{2074}
% Chapter (and unnumbered) fonts (17.28pt).
\def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
\font\chapi=cmmi12 scaled \magstep2
\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
% Section fonts (14.4pt).
\def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
\font\seci=cmmi12 scaled \magstep1
\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
% Subsection fonts (13.15pt).
\def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
\font\sseci=cmmi12 scaled \magstephalf
\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
% Reduced fonts for @acro in text (10pt).
\def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}
-\setfont\reducedtt\ttshape{10}{1000}
-\setfont\reducedbf\bfshape{10}{1000}
-\setfont\reducedit\itshape{10}{1000}
-\setfont\reducedsl\slshape{10}{1000}
-\setfont\reducedsf\sfshape{10}{1000}
-\setfont\reducedsc\scshape{10}{1000}
-\setfont\reducedttsl\ttslshape{10}{1000}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
\font\reducedi=cmmi10
\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit. This is for the GNU
+% Press printing of the Emacs 22 manual. Maybe other manuals in the
+% future. Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+% @fonttextsize 10
+% (or 11) to redefine the text font size. pt is assumed.
+%
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+ \def\textsizearg{#1}%
+ \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.
+ %
+ \begingroup \globaldefs=1
+ \ifx\textsizearg\xword \definetextfontsizex
+ \else \ifx\textsizearg\xiword \definetextfontsizexi
+ \else
+ \errhelp=\EMsimple
+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+ \fi\fi
+ \endgroup
+}
+
% In order for the font changes to affect most math symbols and letters,
% we have to define the \textfont of the standard families. Since
% Set up the default fonts, so we can use them for creating boxes.
%
-\textfonts \rm
+\definetextfontsizexi
% Define these so they can be easily changed for other fonts.
\def\angleleft{$\langle$}
\newcount\fontdepth \fontdepth=0
% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bfshape{10}{\magstep1} % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
%% Add scribe-like font environments, plus @l for inline lisp (usually sans
%% serif) and @ii for TeX italic
\null
}
\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
+\setfont\keyrm\rmshape{8}{1000}{OT1}
\font\keysy=cmsy9
\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
\raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
\hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
\kern-0.4pt\hrule}%
\kern-.06em\raise0.4pt\hbox{\angleright}}}}
+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
% The old definition, with no lozenge:
%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
\def\ctrl #1{{\tt \rawbackslash \hat}#1}
% and arrange explicitly to hyphenate at a dash.
% -- rms.
{
- \catcode`\-=\active
- \catcode`\_=\active
+ \catcode`\-=\active \catcode`\_=\active
+ \catcode`\'=\active \catcode`\`=\active
%
\global\def\code{\begingroup
- \catcode`\-=\active \catcode`\_=\active
+ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+ \let'\codequoteright \let`\codequoteleft
+ %
+ \catcode\dashChar=\active \catcode\underChar=\active
\ifallowcodebreaks
\let-\codedash
\let_\codeunder
\thiseurofont
}
+% Hacks for glyphs from the EC fonts similar to \euro. We don't
+% use \let for the aliases, because sometimes we redefine the original
+% macro, and the alias should reflect the redefinition.
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+\def\ecfont{%
+ % We can't distinguish serif/sanserif and italic/slanted, but this
+ % is used for crude hacks anyway (like adding French and German
+ % quotes to documents typeset with CM, where we lose kerning), so
+ % hopefully nobody will notice/care.
+ \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+ \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \else
+ % regular:
+ \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \fi
+ \thisecfont
+}
+
% @registeredsymbol - R in a circle. The font for the R should really
% be smaller yet, but lllsize is the best we can do for now.
% Adapted from the plain.tex definition of \copyright.
}$%
}
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
% Laurent Siebenmann reports \Orb undefined with:
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
\def\Orb{\mathhexbox20D}
\fi
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
\message{page headings,}
%
% Leave some space for the footline. Hopefully ok to assume
% @evenfooting will not be used by itself.
- \global\advance\pageheight by -\baselineskip
- \global\advance\vsize by -\baselineskip
+ \global\advance\pageheight by -12pt
+ \global\advance\vsize by -12pt
}
\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+% @evenheadingmarks top \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+ \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+ \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+ \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+ \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
% @headings double turns headings on for double-sided printing.
% @headings single turns headings on for single-sided printing.
\def\doignore#1{\begingroup
% Scan in ``verbatim'' mode:
+ \obeylines
\catcode`\@ = \other
\catcode`\{ = \other
\catcode`\} = \other
\gdef\dodoignore#1{%
% #1 contains the command name as a string, e.g., `ifinfo'.
%
- % Define a command to find the next `@end #1', which must be on a line
- % by itself.
- \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
+ % Define a command to find the next `@end #1'.
+ \long\def\doignoretext##1^^M@end #1{%
+ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
% And this command to find another #1 command, at the beginning of a
% line. (Otherwise, we would consider a line `@c @ifset', for
% example, to count as an @ifset for nesting.)
\long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
%
% And now expand that command.
- \obeylines %
\doignoretext ^^M%
}%
}
}
% Finish off ignored text.
-\def\enddoignore{\endgroup\ignorespaces}
+{ \obeylines%
+ % Ignore anything after the last `@end #1'; this matters in verbatim
+ % environments, where otherwise the newline after an ignored conditional
+ % would result in a blank line in the output.
+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
% @set VAR sets the variable VAR to an empty value.
\escapechar = `\\ % use backslash in output files.
\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
%
+ % I don't entirely understand this, but when an index entry is
+ % generated from a macro call, the \endinput which \scanmacro inserts
+ % causes processing to be prematurely terminated. This is,
+ % apparently, because \indexsorttmp is fully expanded, and \endinput
+ % is an expandable command. The redefinition below makes \endinput
+ % disappear altogether for that purpose -- although logging shows that
+ % processing continues to some further point. On the other hand, it
+ % seems \endinput does not hurt in the printed index arg, since that
+ % is still getting written without apparent harm.
+ %
+ % Sample source (mac-idx3.tex, reported by Graham Percival to
+ % help-texinfo, 22may06):
+ % @macro funindex {WORD}
+ % @findex xyz
+ % @end macro
+ % ...
+ % @funindex commtest
+ %
+ % The above is not enough to reproduce the bug, but it gives the flavor.
+ %
+ % Sample whatsit resulting:
+ % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+ %
+ % So:
+ \let\endinput = \empty
+ %
% Do the redefinitions.
\commondummies
}
%
% Do the redefinitions.
\commondummies
+ \otherbackslash
}
% Called from \indexdummies and \atdummies.
\definedummyword\equiv
\definedummyword\error
\definedummyword\euro
+ \definedummyword\guillemetleft
+ \definedummyword\guillemetright
+ \definedummyword\guilsinglleft
+ \definedummyword\guilsinglright
\definedummyword\expansion
\definedummyword\minus
\definedummyword\pounds
\definedummyword\point
\definedummyword\print
+ \definedummyword\quotedblbase
+ \definedummyword\quotedblleft
+ \definedummyword\quotedblright
+ \definedummyword\quoteleft
+ \definedummyword\quoteright
+ \definedummyword\quotesinglbase
\definedummyword\result
+ \definedummyword\textdegree
%
% We want to disable all macros so that they are not expanded by \write.
\macrolist
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
%
-% Better have this without active chars.
-{
- \catcode`\~=\other
- \gdef\commondummiesnofonts{%
- % Control letters and accents.
- \definedummyletter\!%
- \definedummyaccent\"%
- \definedummyaccent\'%
- \definedummyletter\*%
- \definedummyaccent\,%
- \definedummyletter\.%
- \definedummyletter\/%
- \definedummyletter\:%
- \definedummyaccent\=%
- \definedummyletter\?%
- \definedummyaccent\^%
- \definedummyaccent\`%
- \definedummyaccent\~%
- \definedummyword\u
- \definedummyword\v
- \definedummyword\H
- \definedummyword\dotaccent
- \definedummyword\ringaccent
- \definedummyword\tieaccent
- \definedummyword\ubaraccent
- \definedummyword\udotaccent
- \definedummyword\dotless
- %
- % Texinfo font commands.
- \definedummyword\b
- \definedummyword\i
- \definedummyword\r
- \definedummyword\sc
- \definedummyword\t
- %
- % Commands that take arguments.
- \definedummyword\acronym
- \definedummyword\cite
- \definedummyword\code
- \definedummyword\command
- \definedummyword\dfn
- \definedummyword\emph
- \definedummyword\env
- \definedummyword\file
- \definedummyword\kbd
- \definedummyword\key
- \definedummyword\math
- \definedummyword\option
- \definedummyword\samp
- \definedummyword\strong
- \definedummyword\tie
- \definedummyword\uref
- \definedummyword\url
- \definedummyword\var
- \definedummyword\verb
- \definedummyword\w
- }
+\def\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sc
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\acronym
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\pxref
+ \definedummyword\ref
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ \definedummyword\xref
}
% \indexnofonts is used when outputting the strings to sort the index
\def\equiv{==}%
\def\error{error}%
\def\euro{euro}%
+ \def\guillemetleft{<<}%
+ \def\guillemetright{>>}%
+ \def\guilsinglleft{<}%
+ \def\guilsinglright{>}%
\def\expansion{==>}%
\def\minus{-}%
\def\pounds{pounds}%
\def\point{.}%
\def\print{-|}%
+ \def\quotedblbase{"}%
+ \def\quotedblleft{"}%
+ \def\quotedblright{"}%
+ \def\quoteleft{`}%
+ \def\quoteright{'}%
+ \def\quotesinglbase{,}%
\def\result{=>}%
+ \def\textdegree{degrees}%
%
% 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.
%
\edef\writeto{\csname#1indfile\endcsname}%
%
- \ifvmode
- \dosubindsanitize
- \else
- \dosubindwrite
- \fi
+ \safewhatsit\dosubindwrite
}%
\fi
}
\temp
}
-% Take care of unwanted page breaks:
+% Take care of unwanted page breaks/skips around a whatsit:
%
% If a skip is the last thing on the list now, preserve it
% by backing up by \lastskip, doing the \write, then inserting
% the skip again. Otherwise, the whatsit generated by the
-% \write will make \lastskip zero. The result is that sequences
-% like this:
+% \write or \pdfdest will make \lastskip zero. The result is that
+% sequences like this:
% @end defun
% @tindex whatever
% @defun ...
%
\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
% ..., ready, GO:
%
-\def\dosubindsanitize{%
+\def\safewhatsit#1{%
+\ifhmode
+ #1%
+\else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
- \skip0 = \lastskip
+ \whatsitskip = \lastskip
\edef\lastskipmacro{\the\lastskip}%
- \count255 = \lastpenalty
+ \whatsitpenalty = \lastpenalty
%
% If \lastskip is nonzero, that means the last item was a
% skip. And since a skip is discardable, that means this
- % -\skip0 glue we're inserting is preceded by a
+ % -\whatsitskip glue we're inserting is preceded by a
% non-discardable item, therefore it is not a potential
% breakpoint, therefore no \nobreak needed.
\ifx\lastskipmacro\zeroskipmacro
\else
- \vskip-\skip0
+ \vskip-\whatsitskip
\fi
%
- \dosubindwrite
+ #1%
%
\ifx\lastskipmacro\zeroskipmacro
% If \lastskip was zero, perhaps the last item was a penalty, and
% Description.
% would allow a break between the index-whatever whatsit
% and the "Description." paragraph.
- \ifnum\count255>9999 \penalty\count255 \fi
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
\else
% On the other hand, if we had a nonzero \lastskip,
% this make-up glue would be preceded by a non-discardable item
% (the whatsit from the \write), so we must insert a \nobreak.
- \nobreak\vskip\skip0
+ \nobreak\vskip\whatsitskip
\fi
+\fi
}
% The index entry written in the file actually looks like
%
\smallfonts \rm
\tolerance = 9500
+ \plainfrenchspacing
\everypar = {}% don't want the \kern\-parindent from indentation suppression.
%
% See if the index file exists and is nonempty.
% The following is kludged to not output a line of dots in the index if
% there are no page numbers. The next person who breaks this will be
% cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#1}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd
+ \setbox\boxA = \hbox{#1}%
+ \ifdim\wd\boxA = 0pt
\ %
\else
%
\endgroup
}
-% Like \dotfill except takes at least 1 em.
+% Like plain.tex's \dotfill, except uses up at least 1 em.
\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
\def\primary #1{\line{#1\hfil}}
%
% All done with double columns.
\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
\output = {%
% Split the last of the double-column material. Leave it on the
% current page, no automatic page break.
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise.
-% However, they are not reliable, because we don't use marks.
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter. Page headings and footings can use
+% these. @section does likewise.
\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
\newcount\absseclevel % used to calculate proper heading level
\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
\def\chapbreak{\dobreak \chapheadingskip {-4000}}
\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong. But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+ \chappager
+ \ifodd\pageno \else
+ \begingroup
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+ \hbox to 0pt{}%
+ \chappager
+ \endgroup
+ \fi
+}
\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
\def\Yappendixkeyword{Yappendix}
%
\def\chapmacro#1#2#3{%
+ % Insert the first mark before the heading break (see notes for \domark).
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \gdef\thissection{}}%
+ %
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{\thischaptername}}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{}}%
+ \else\ifx\temptype\Yappendixkeyword
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\appendixletter}%
+ \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \else
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\the\chapno}%
+ \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert the chapter heading break.
\pchapsepmacro
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
{%
\chapfonts \rm
%
- % Have to define \thissection before calling \donoderef, because the
+ % Have to define \lastsection before calling \donoderef, because the
% xref code eventually uses it. On the other hand, it has to be called
% after \pchapsepmacro, or the headline will change too soon.
- \gdef\thissection{#1}%
- \gdef\thischaptername{#1}%
+ \gdef\lastsection{#1}%
%
% Only insert the separating space if we have a chapter/appendix
% number, and don't print the unnumbered ``number''.
- \def\temptype{#2}%
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unnchap}%
- \gdef\thischapter{#1}%
\else\ifx\temptype\Yomitfromtockeyword
\setbox0 = \hbox{}% contents like unnumbered, but no toc entry
\def\toctype{omit}%
- \gdef\thischapter{}%
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
\def\toctype{app}%
- % We don't substitute the actual chapter name into \thischapter
- % because we don't want its macros evaluated now. And we don't
- % use \thissection because that changes with each section.
- %
- \xdef\thischapter{\putwordAppendix{} \appendixletter:
- \noexpand\thischaptername}%
\else
\setbox0 = \hbox{#3\enspace}%
\def\toctype{numchap}%
- \xdef\thischapter{\putwordChapter{} \the\chapno:
- \noexpand\thischaptername}%
\fi\fi\fi
%
% Write the toc entry for this chapter. Must come before the
\donoderef{#2}%
%
% Typeset the actual heading.
+ \nobreak % Avoid page breaks at the interline glue.
\vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
\hangindent=\wd0 \centerparametersmaybe
\unhbox0 #1\par}%
% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
% section number.
%
+\def\seckeyword{sec}
+%
\def\sectionheading#1#2#3#4{%
{%
% Switch to the right set of fonts.
\csname #2fonts\endcsname \rm
%
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ % Insert first mark before the heading break (see notes for \domark).
+ \let\prevsectiondefs=\lastsectiondefs
+ \ifx\temptype\Ynothingkeyword
+ \ifx\sectionlevel\seckeyword
+ \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\thissection{\thissectionname}}%
+ \fi
+ \else\ifx\temptype\Yomitfromtockeyword
+ % Don't redefine \thissection.
+ \else\ifx\temptype\Yappendixkeyword
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \else
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
% Insert space above the heading.
\csname #2headingbreak\endcsname
%
- % Only insert the space after the number if we have a section number.
- \def\sectionlevel{#2}%
- \def\temptype{#3}%
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
%
+ % Only insert the space after the number if we have a section number.
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unn}%
- \gdef\thissection{#1}%
+ \gdef\lastsection{#1}%
\else\ifx\temptype\Yomitfromtockeyword
% for @headings -- no section number, don't include in toc,
- % and don't redefine \thissection.
+ % and don't redefine \lastsection.
\setbox0 = \hbox{}%
\def\toctype{omit}%
\let\sectionlevel=\empty
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{#4\enspace}%
\def\toctype{app}%
- \gdef\thissection{#1}%
+ \gdef\lastsection{#1}%
\else
\setbox0 = \hbox{#4\enspace}%
\def\toctype{num}%
- \gdef\thissection{#1}%
+ \gdef\lastsection{#1}%
\fi\fi\fi
%
- % Write the toc entry (before \donoderef). See comments in \chfplain.
+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
\writetocentry{\toctype\sectionlevel}{#1}{#4}%
%
% Write the node reference (= pdf destination for pdftex).
- % Again, see comments in \chfplain.
+ % Again, see comments in \chapmacro.
\donoderef{#3}%
%
+ % Interline glue will be inserted when the vbox is completed.
+ % That glue will be a valid breakpoint for the page, since it'll be
+ % preceded by a whatsit (usually from the \donoderef, or from the
+ % \writetocentry if there was no node). We don't want to allow that
+ % break, since then the whatsits could end up on page n while the
+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
+ \nobreak
+ %
% Output the actual section heading.
\vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
\hangindent=\wd0 % zero if no section number
\edef\temp{%
\write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
\temp
- }
+ }%
\fi
\fi
%
\def\readtocfile{%
\setupdatafile
\activecatcodes
- \input \jobname.toc
+ \input \tocreadfilename
}
\newskip\contentsrightmargin \contentsrightmargin=1in
%
% Don't need to put `Contents' or `Short Contents' in the headline.
% It is abundantly clear what they are.
- \def\thischapter{}%
\chapmacro{#1}{Yomitfromtoc}{}%
%
\savepageno = \pageno
\ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
}
+% redefined for the two-volume lispref. We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
% Normal (long) toc.
+%
\def\contents{%
\startcontents{\putwordTOC}%
- \openin 1 \jobname.toc
+ \openin 1 \tocreadfilename\space
\ifeof 1 \else
\readtocfile
\fi
\let\numsubsubsecentry = \numsecentry
\let\appsubsubsecentry = \numsecentry
\let\unnsubsubsecentry = \numsecentry
- \openin 1 \jobname.toc
+ \openin 1 \tocreadfilename\space
\ifeof 1 \else
\readtocfile
\fi
{\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 \tensf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
%
\setbox\errorbox=\hbox to \dimen0{\hfil
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
\let\SETdispenvsize\relax
\def\setnormaldispenv{%
\ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
\smallexamplefonts \rm
\fi
}
\def\setsmalldispenv{%
\ifx\SETdispenvsize\nosmallword
\else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
\smallexamplefonts \rm
\fi
}
%
\maketwodispenvs {lisp}{example}{%
\nonfillstart
- \tt
+ \tt\quoteexpand
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
\gobble % eat return
}
-
% @display/@smalldisplay: same as @lisp except keep current font.
%
\makedispenv {display}{%
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
\def\starttabbox{\setbox0=\hbox\bgroup}
+
+% 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.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
+ \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ `%
+ \else \char'22 \fi
+ \else \char'22 \fi
+}
+%
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
\wd0=\dimen0 \box0 \starttabbox
}%
}
+ \catcode`\'=\active
+ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+ %
+ \catcode`\`=\active
+ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+ %
+ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
\endgroup
+
+% start the verbatim environment.
\def\setupverbatim{%
\let\nonarrowing = t%
\nonfillstart
\def\par{\leavevmode\egroup\box0\endgraf}%
\catcode`\`=\active
\tabexpand
+ \quoteexpand
% Respect line breaks,
% print special symbols as themselves, and
% make each space count
\endgroup
}
+
\message{defuns,}
% @defun etc.
\newskip\defbodyindent \defbodyindent=.4in
\newskip\defargsindent \defargsindent=50pt
\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
% Start the processing of @deffn:
\def\startdefun{%
\ifnum\lastpenalty<10000
\medbreak
+ \defunpenalty=10003 % Will keep this @deffn together with the
+ % following @def command, see below.
\else
% If there are two @def commands in a row, we'll have a \nobreak,
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we need to allow a
% break somewhere. Check specifically for penalty 10002, inserted
- % by \defargscommonending, instead of 10000, since the sectioning
+ % by \printdefunline, instead of 10000, since the sectioning
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
- %
- \ifnum\lastpenalty=10002 \penalty2000 \fi
+ %
+ % As a minor 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.
+ \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
%
% Similarly, after a section heading, do not allow a break.
% But do insert the glue.
%
% As above, allow line break if we have multiple x headers in a row.
% It's not a great place, though.
- \ifnum\lastpenalty=10002 \penalty3000 \fi
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
%
% And now, it's time to reuse the body of the original defun:
\expandafter\gobbledefun#1%
\advance\rightskip by 0pt plus 1fil
\endgraf
\nobreak\vskip -\parskip
- \penalty 10002 % signal to \startdefun and \dodefunx
+ \penalty\defunpenalty % signal to \startdefun and \dodefunx
% Some of the @defun-type tags do not enable magic parentheses,
% rendering the following check redundant. But we don't optimize.
\checkparencounts
\ifnum\parencount=0 \else \badparencount \fi
\ifnum\brackcount=0 \else \badbrackcount \fi
}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
\def\badparencount{%
- \errmessage{Unbalanced parentheses in @def}%
+ \message{Warning: unbalanced parentheses in @def...}%
\global\parencount=0
}
\def\badbrackcount{%
- \errmessage{Unbalanced square braces in @def}%
+ \message{Warning: unbalanced square brackets in @def...}%
\global\brackcount=0
}
\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}%
% all characters are catcode 10, 11 or 12, except \ which is active
% (as in normal texinfo). It is necessary to change the definition of \.
+% 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
% body, and then making it the \newlinechar in \scanmacro.
\catcode`\_=\other
\catcode`\|=\other
\catcode`\~=\other
+ \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
}
\def\scanargctxt{%
% {. 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)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
\expandafter\parsearg
- \fi \next}
+ \fi \macnamexxx}
% @alias.
\message{cross references,}
\newwrite\auxfile
-
\newif\ifhavexrefs % True if xref values are known.
\newif\ifwarnedxrefs % True if we warned once that they aren't known.
% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \thissection,
+% 1) NAME-title - the current sectioning name taken from \lastsection,
% or the anchor name.
% 2) NAME-snt - section number and type, passed as the SNT arg, or
% empty for anchors.
\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
}%
- \toks0 = \expandafter{\thissection}%
+ \toks0 = \expandafter{\lastsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \writexrdef{pg}{\folio}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
}%
\fi
}
\ifpdf
\leavevmode
\getfilename{#4}%
- {\turnoffactive
+ {\indexnofonts
+ \turnoffactive
% See comments at \activebackslashdouble.
{\activebackslashdouble \xdef\pdfxrefdest{#1}%
\backslashparens\pdfxrefdest}%
goto name{\pdfmkpgn{\pdfxrefdest}}%
\fi
}%
- \linkcolor
+ \setcolor{\linkcolor}%
\fi
%
% Float references are printed completely differently: "Figure 1.2"
% If the user specified the print name (third arg) to the ref,
% print it instead of our usual "Figure 1.2".
\ifdim\wd0 = 0pt
- \refx{#1-snt}%
+ \refx{#1-snt}{}%
\else
\printedrefname
\fi
% is a loss. Therefore, we give the text of the node name again, so it
% is as if TeX is seeing it for the first time.
\ifdim \wd1 > 0pt
- \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+ \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
\else
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
% collisions). But if this is a float type, we have more work to do.
%
\def\xrdef#1#2{%
- \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
%
% Was that xref control sequence that we just defined for a float?
- \expandafter\iffloat\csname XR#1\endcsname
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
% it was a float, and we have the (safe) float type in \iffloattype.
\expandafter\let\expandafter\floatlist
\csname floatlist\iffloattype\endcsname
%
% Remember this xref in the control sequence \floatlistFLOATTYPE,
% for later use in \listoffloats.
- \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
\fi
}
\input\jobname.#1
\endgroup}
+
\message{insertions,}
% including footnotes.
% above and below.
\nobreak\vskip\parskip
\nobreak
- \line\bgroup\hss
+ \line\bgroup
\fi
%
% Output the image.
\epsfbox{#1.eps}%
\fi
%
- \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
+ \ifimagevmode \egroup \bigbreak \fi % space after the image
\endgroup}
\global\advance\floatno by 1
%
{%
- % This magic value for \thissection is output by \setref as the
+ % This magic value for \lastsection is output by \setref as the
% XREFLABEL-title value. \xrefX uses it to distinguish float
% labels (which have a completely different output format) from
% node and anchor labels. And \xrdef uses it to construct the
% lists of floats.
%
- \edef\thissection{\floatmagic=\safefloattype}%
+ \edef\lastsection{\floatmagic=\safefloattype}%
\setref{\floatlabel}{Yfloat}%
}%
\fi
% caption if specified, else the full caption if specified, else nothing.
{%
\atdummies
+ %
% since we read the caption text in the macro world, where ^^M
% is turned into a normal character, we have to scan it back, so
% we don't write the literal three characters "^^M" into the aux file.
%
% place the captured inserts
%
- % BEWARE: when the floats start float, we have to issue warning whenever an
- % insert appears inside a float which could possibly float. --kasal, 26may04
+ % BEWARE: when the floats start floating, we have to issue warning
+ % whenever an insert appears inside a float which could possibly
+ % float. --kasal, 26may04
%
\checkinserts
}
% #1 is the control sequence we are passed; we expand into a conditional
% which is true if #1 represents a float ref. That is, the magic
-% \thissection value which we \setref above.
+% \lastsection value which we \setref above.
%
\def\iffloat#1{\expandafter\doiffloat#1==\finish}
%
\writeentry
}}
+
\message{localization,}
-% and i18n.
% @documentlanguage is usually given very early, just after
% @setfilename. If done too late, it may not override everything
-% properly. Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
+% properly. Single argument is the language (de) or locale (de_DE)
+% abbreviation. It would be nice if we could set up a hyphenation file.
%
-\parseargdef\documentlanguage{%
+{
+ \catcode`\_ = \active
+ \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+ \let_=\normalunderscore % normal _ character for filenames
\tex % read txi-??.tex file in plain TeX.
- % Read the file if it exists.
+ % Read the file by the name they passed if it exists.
\openin 1 txi-#1.tex
\ifeof 1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
+ \documentlanguagetrywithoutunderscore{#1_\finish}%
\else
\input txi-#1.tex
\fi
\closein 1
\endgroup
+\endgroup}
+}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \input txi-#1.tex
+ \fi
+ \closein 1
}
+%
\newhelp\nolanghelp{The given language definition file cannot be found or
is empty. Maybe you need to install it? In the current directory
should work if nowhere else does.}
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
+\def\setnonasciicharscatcodenonglobal#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ \utfeightchardefs
+ %
+ \else
+ \message{Unknown document encoding #1, ignoring.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a3{{\pounds}}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\missingcharmsg{YEN SIGN}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^ac{$\lnot$}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ %
+ \gdef^^b7{$^.$}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ %
+ \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+ \gdef^^b2{\missingcharmsg{OGONEK}}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'\i}
+ \gdef^^ee{\^\i}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
-% Page size parameters.
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BB}{\guillemetright}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2018}{\quoteleft}
+ \DeclareUnicodeCharacter{2019}{\quoteright}
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+ \DeclareUnicodeCharacter{201C}{\quotedblleft}
+ \DeclareUnicodeCharacter{201D}{\quotedblright}
+ \DeclareUnicodeCharacter{201E}{\quotedblbase}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+ \DeclareUnicodeCharacter{203A}{\guilsinglright}
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
\newdimen\defaultparindent \defaultparindent = 15pt
\chapheadingskip = 15pt plus 4pt minus 2pt
% Don't be so finicky about underfull hboxes, either.
\hbadness = 2000
-% Following George Bush, just get rid of widows and orphans.
+% Following George Bush, get rid of widows and orphans.
\widowpenalty=10000
\clubpenalty=10000
\ifpdf
\pdfpageheight #7\relax
\pdfpagewidth #8\relax
+ % if we don't reset these, they will remain at "1 true in" of
+ % whatever layout pdftex was dumped with.
+ \pdfhorigin = 1 true in
+ \pdfvorigin = 1 true in
\fi
%
\setleading{\textleading}
\textleading = 13.2pt
%
% If page is nothing but text, make it come out even.
- \internalpagesizes{46\baselineskip}{6in}%
+ \internalpagesizes{607.2pt}{6in}% that's 46 lines
{\voffset}{.25in}%
{\bindingoffset}{36pt}%
{11in}{8.5in}%
\textleading = 12pt
%
\internalpagesizes{7.5in}{5in}%
- {\voffset}{.25in}%
+ {-.2in}{0in}%
{\bindingoffset}{16pt}%
{9.25in}{7in}%
%
% \global\normaloffset = -6mm
% \global\bindingoffset = 10mm
% @end tex
- \internalpagesizes{51\baselineskip}{160mm}
+ \internalpagesizes{673.2pt}{160mm}% that's 51 lines
{\voffset}{\hoffset}%
{\bindingoffset}{44pt}%
{297mm}{210mm}%
\parskip = 3pt plus 2pt minus 1pt
\setleading{\textleading}%
%
- \dimen0 = #1
+ \dimen0 = #1\relax
\advance\dimen0 by \voffset
%
\dimen2 = \hsize
% \otherifyactive is called near the end of this file.
\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+ \normalturnoffactive
+ \otherbackslash
+}
+
\catcode`\@=0
% \backslashcurfont outputs one backslash character in current font,
\global\chardef\backslashcurfont=`\\
\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
-% \rawbackslash defines an active \ to do \backslashcurfont.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-{\catcode`\\=\active
- @gdef@rawbackslash{@let\=@backslashcurfont}
- @gdef@otherbackslash{@let\=@realbackslash}
-}
-
% \realbackslash is an actual character `\' with catcode other, and
% \doublebackslash is two of them (for the pdf outlines).
{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\backslashcurfont}}
-
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% 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.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{%
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+ @let\=@normalbackslash
@let"=@normaldoublequote
- @let\=@realbackslash
@let~=@normaltilde
@let^=@normalcaret
@let_=@normalunderscore
@unsepspaces
}
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'. (Thus, \ is not expandable when this is in
-% effect.)
-%
-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
-
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
@otherifyactive
@global@let\ = @eatinput
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
+% the first `\' in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
## Input file for automake to generate the Makefile.in used by configure
-GLIBJ_CLASSPATH='$(top_builddir)/lib':'$(top_builddir)/lib/glibj.zip':'$(top_builddir)/tools/tools.zip'
-
-# Setup the compiler to use the GNU Classpath library we just build
-#if FOUND_GCJ
-#JCOMPILER = $(GCJ) --bootclasspath '$(top_builddir)/lib' --classpath . -C
-#else
-#if FOUND_JIKES
-#JCOMPILER = $(JIKES) -bootclasspath '' -extdirs '' -sourcepath '' --classpath $(top_builddir)/lib:.
-#else
-if FOUND_ECJ
-JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_CLASSPATH) -classpath .
-else
-if FOUND_JAVAC
-JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath .
-else
-error dunno how to setup the JCOMPILER and compile
-#endif
-#endif
-endif
-endif
+GLIBJ_CLASSPATH='$(top_builddir)/lib/glibj.zip'
+
+JCOMPILER = $(JAVAC) $(JAVACFLAGS) -source 1.5 -target 1.5 -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath '$(top_builddir)/tools/tools.zip'
# All our example java source files
EXAMPLE_JAVA_FILES = $(srcdir)/gnu/classpath/examples/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*/*.java
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
target_vendor = @target_vendor@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
-GLIBJ_CLASSPATH = '$(top_builddir)/lib':'$(top_builddir)/lib/glibj.zip':'$(top_builddir)/tools/tools.zip'
-@FOUND_ECJ_FALSE@@FOUND_JAVAC_TRUE@JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath .
-
-# Setup the compiler to use the GNU Classpath library we just build
-#if FOUND_GCJ
-#JCOMPILER = $(GCJ) --bootclasspath '$(top_builddir)/lib' --classpath . -C
-#else
-#if FOUND_JIKES
-#JCOMPILER = $(JIKES) -bootclasspath '' -extdirs '' -sourcepath '' --classpath $(top_builddir)/lib:.
-#else
-@FOUND_ECJ_TRUE@JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_CLASSPATH) -classpath .
-#endif
-#endif
+GLIBJ_CLASSPATH = '$(top_builddir)/lib/glibj.zip'
+JCOMPILER = $(JAVAC) $(JAVACFLAGS) -source 1.5 -target 1.5 -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath '$(top_builddir)/tools/tools.zip'
# All our example java source files
EXAMPLE_JAVA_FILES = $(srcdir)/gnu/classpath/examples/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*/*.java
uninstall uninstall-am uninstall-exampleDATA uninstall-info-am \
uninstall-local
-@FOUND_ECJ_FALSE@@FOUND_JAVAC_FALSE@error dunno how to setup the JCOMPILER and compile
# Make sure all sources and icons are also installed so users can use them.
# (Be careful to strip off the srcdir part of the path when installing.)
import gnu.CORBA.OrbRestricted;
-import org.omg.CORBA.ORB;
import org.omg.CORBA.StructMember;
import org.omg.CORBA.TypeCode;
import org.omg.CORBA.portable.InputStream;
import gnu.CORBA.OrbRestricted;
-import org.omg.CORBA.ORB;
import org.omg.CORBA.StructMember;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
import gnu.CORBA.OrbRestricted;
import org.omg.CORBA.Any;
-import org.omg.CORBA.ORB;
import org.omg.CORBA.StructMember;
import org.omg.CORBA.TypeCode;
import org.omg.CORBA.portable.InputStream;
import gnu.CORBA.OrbRestricted;
import org.omg.CORBA.Any;
-import org.omg.CORBA.ORB;
import org.omg.CORBA.StructMember;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
package gnu.classpath.examples.awt;
import java.awt.*;
-import java.awt.event.*;
import java.applet.*;
void runTestSet(Graphics2D g, Dimension size)
{
// Any user-specified options (ie set transforms, rendering hints)
- prepareGraphics((Graphics2D) g);
+ prepareGraphics(g);
if ((awtTests & J2DTEST_ARC) != 0)
{
import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import java.util.Set;
-import javax.management.DynamicMBean;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
public class TestBeans
{
public static void main(String[] args)
throws Exception
{
- List beans = new ArrayList();
- /* FIXME: When there's a server, this will be easier... :) */
- beans.add(ManagementFactory.getOperatingSystemMXBean());
- beans.add(ManagementFactory.getRuntimeMXBean());
- beans.add(ManagementFactory.getThreadMXBean());
- beans.add(ManagementFactory.getCompilationMXBean());
- beans.add(ManagementFactory.getClassLoadingMXBean());
- beans.add(ManagementFactory.getMemoryMXBean());
- beans.addAll(ManagementFactory.getMemoryPoolMXBeans());
- beans.addAll(ManagementFactory.getMemoryManagerMXBeans());
- beans.addAll(ManagementFactory.getGarbageCollectorMXBeans());
- Iterator it = beans.iterator();
- while (it.hasNext())
- {
- DynamicMBean bean = (DynamicMBean) it.next();
- if (bean != null)
- System.out.println(bean.getMBeanInfo());
- }
+ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ Set<ObjectName> names = server.queryNames(null, null);
+ for (ObjectName name : names)
+ System.out.println(server.getMBeanInfo(name));
}
}
import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;
+import static java.lang.management.ManagementFactory.CLASS_LOADING_MXBEAN_NAME;
+
+import javax.management.Attribute;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
public class TestClassLoading
{
public static void main(String[] args)
+ throws Exception
{
+ System.out.println("Testing locally...");
ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();
System.out.println("Bean: " + bean);
System.out.println("Loaded classes: " + bean.getLoadedClassCount());
System.out.println("Changing verbose setting...");
bean.setVerbose(!verbosity);
System.out.println("Verbose class output: " + (bean.isVerbose() ? "yes" : "no"));
+ System.out.println("Testing via the server...");
+ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ ObjectName classBean = new ObjectName(CLASS_LOADING_MXBEAN_NAME);
+ System.out.println("Bean: " + classBean);
+ System.out.println("Loaded classes: " + server.getAttribute(classBean, "LoadedClassCount"));
+ System.out.println("Unloaded classes: " + server.getAttribute(classBean,
+ "UnloadedClassCount"));
+ System.out.println("Total loaded classes: " + server.getAttribute(classBean,
+ "TotalLoadedClassCount"));
+ verbosity = (Boolean) server.getAttribute(classBean, "Verbose");
+ System.out.println("Verbose class output: " + (verbosity ? "yes" : "no"));
+ System.out.println("Changing verbose setting...");
+ server.setAttribute(classBean, new Attribute("Verbose", !verbosity));
+ System.out.println("Verbose class output: " + ((Boolean)
+ server.getAttribute(classBean, "Verbose") ?
+ "yes" : "no"));
+ System.out.println("Testing via the proxy...");
+ bean = ManagementFactory.newPlatformMXBeanProxy(server, CLASS_LOADING_MXBEAN_NAME,
+ ClassLoadingMXBean.class);
+ System.out.println("Bean: " + bean);
+ System.out.println("Loaded classes: " + bean.getLoadedClassCount());
+ System.out.println("Unloaded classes: " + bean.getUnloadedClassCount());
+ System.out.println("Total loaded classes: " + bean.getTotalLoadedClassCount());
+ verbosity = bean.isVerbose();
+ System.out.println("Verbose class output: " + (verbosity ? "yes" : "no"));
+ System.out.println("Changing verbose setting...");
+ bean.setVerbose(!verbosity);
+ System.out.println("Verbose class output: " + (bean.isVerbose() ? "yes" : "no"));
}
}
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
-import java.lang.management.MemoryUsage;
-
import java.util.Arrays;
import java.util.Iterator;
--- /dev/null
+/* AudioPlayerSample.java -- Simple Java Audio Player
+ Copyright (C) 2007 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 gnu.classpath.examples.sound;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.DataLine;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.SourceDataLine;
+import javax.sound.sampled.UnsupportedAudioFileException;
+
+/**
+ * A simple demo to show the use of the Java Sound API.
+ * It plays the given file (up to the end, so don't pass the 26 minutes long
+ * Pink Floyd's Echoes unless you really want!!).
+ *
+ * See: http://jsresources.org/examples/SimpleAudioPlayer.java.html
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class AudioPlayerSample
+{
+ private static final int EXTERNAL_BUFFER_SIZE = 128000;
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args)
+ {
+ if (args.length < 1)
+ {
+ System.out.println("Radio Classpath -: Usage: " +
+ "AudioPlayerSample [file]");
+ return;
+ }
+
+ String file = args[0];
+
+ System.out.println("Welcome to Radio Classpath, only great music for you!");
+ System.out.println("Today's DJ Tap The WaterDroplet");
+
+ // now create the AudioInputStream
+ AudioInputStream audioInputStream = null;
+ try
+ {
+ audioInputStream = AudioSystem.getAudioInputStream(new File(file));
+ }
+ catch (UnsupportedAudioFileException e)
+ {
+ // This happen when the subsystem is unable to parse the kind of
+ // audio file we are submitting
+ // See the README for supported audio file types under Classpath
+ // for the version you are using.
+ e.printStackTrace();
+ return;
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ return;
+ }
+
+ // get informations about the kind of file we are about to play
+ AudioFormat audioFormat = audioInputStream.getFormat();
+
+ System.out.println("Playing file: " + file);
+ System.out.println("format: " + audioFormat.toString());
+
+ System.out.print("Additional properties: ");
+
+ // now, we try to get all the properties we have in this AudioFormat
+ // and display them
+ Map<String, Object> properties = audioFormat.properties();
+ if (properties.size() < 0)
+ {
+ System.out.println("none");
+ }
+ else
+ {
+ System.out.println("found #" + properties.size() + " properties");
+ for (String key : properties.keySet())
+ {
+ System.out.println(key + ": " + properties.get(key));
+ }
+ }
+
+ // let's setup things for playing
+ // first, we require a Line. As we are doing playing, we will ask for a
+ // SourceDataLine
+ SourceDataLine line = null;
+
+ // To get the source line, we first need to build an Info object
+ // this is done in one line:
+ DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
+
+ System.out.println("searching line...");
+
+ // usually, if a backend can parse a file type, it can also
+ // create a line to handle it, but that's not guaranteed
+ // so we need to take care and to handle a possible
+ // LineUnavailableException
+ try
+ {
+ line = (SourceDataLine) AudioSystem.getLine(info);
+
+ System.out.println("line found, opening...");
+
+ // once created, a line must be opened to let data flow
+ // though it.
+ line.open(audioFormat);
+ }
+ catch (LineUnavailableException e)
+ {
+ // in a real application you should signal that in a kindly way to
+ // your users
+ e.printStackTrace();
+ return;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ return;
+ }
+
+ // an open line pass data to the backend only when it is in
+ // a state called "started" ("playing" or "play" in some other
+ // framework)
+ System.out.print("starting line... ");
+
+ line.start();
+ System.out.println("done");
+
+ // now we can start reading data from the AudioStream and writing
+ // data to the pipeline. The Java Sound API is rather low level
+ // so let you pass up to one byte of data at a time
+ // (with some constraints, refer to the API documentation to know more)
+ // We will do some buffering. You may want to check the frame size
+ // to allow a better buffering, also.
+
+ System.out.println("now playing...");
+
+ int nBytesRead = 0;
+ byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
+ while (nBytesRead != - 1)
+ {
+ try
+ {
+ nBytesRead = audioInputStream.read(abData, 0, abData.length);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ if (nBytesRead >= 0)
+ {
+ // this method returns the number of bytes actuall written
+ // to the line. You may want to use this number to check
+ // for events, display the current position (give also a
+ // look to the API for other ways of doing that) etc..
+ line.write(abData, 0, nBytesRead);
+ }
+ }
+
+ System.out.print("stream finished, draining line... ");
+
+ // call this method to ensure that all the data in the internal buffer
+ // reach the audio backend, otherwise your application will
+ // cut the last frames of audio data (and users will not enjoy the last
+ // seconds of their precious music)
+ line.drain();
+
+ // Once done, we can close the line. Note that a line, once closed
+ // may not be reopened (depends on the backend, in some cases a "reopen",
+ // if allowed, really opens a new line, reallocating all the resources)
+
+ System.out.println("line drained, now exiting");
+ line.close();
+
+ System.out.println("We hope you enjoyed Radio Classpath!");
+ }
+
+}
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
-import javax.swing.text.TextAction;
/**
* A demonstration of the <code>javax.swing.text.DocumentFilter</code> class.
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.text.DateFormat;
-import java.util.Date;
-
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
-import javax.swing.DefaultListCellRenderer;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
-import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTable;
-import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.plaf.metal.MetalIconFactory;
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
import java.math.BigDecimal;
import java.math.BigInteger;
-import org.omg.CORBA.TypeCode;
import org.omg.CORBA.TypeCodePackage.BadKind;
/**
*
* @param out a stream to write into.
* @param x a big decimal to write.
- * @param digits a number of the decimal digits in the record
- * being written. For the smaller
- * numbers, zeroes are added to the left.
*
* @throws IOException if the stream write method throws one.
* @throws BadKind if this BigDecimal has more digits than
package gnu.CORBA;
-import java.util.Arrays;
import java.util.Comparator;
/**
* Set the Big Endian or Little Endian encoding. The stream reads Big Endian
* by default.
*
- * @param use_little_endian if true, the stream expect the multi-byte data in
- * the form "less significant byte first" (Little Endian). This is the
- * opposite to the java standard (Big Endian).
+ * @param use_big_endian if true, the stream expect the multi-byte data in
+ * the form "most significant byte first" (Big Endian). This is the
+ * java standard.
*/
public void setBigEndian(boolean use_big_endian)
{
/**
* Get the used encoding.
*
- * @param true for Big Endian, false for Little Endian.
+ * @return true for Big Endian, false for Little Endian.
*/
public boolean isBigEndian()
{
byte[] r = new byte[l];
int n = 0;
- reading: while (n < r.length)
+ while (n < r.length)
{
n += read(r, n, r.length - n);
}
/**
* Write a single byte.
- * @param a byte to write (low 8 bits are written).
+ * @param n byte to write (low 8 bits are written).
*/
public void write(int n)
{
* Writes the lower bytes of the passed array members.
*
* @param chars an array
- * @param offsets offset
+ * @param offset offset
* @param length length
*/
public void write_char_array(char[] chars, int offset, int length)
/**
* Create an instance, reading from the given buffer.
*
- * @param a_stram a stream from where the data will be read.
+ * @param a_stream a stream from where the data will be read.
* @param inheritSettings a stream from that endian and other settings are
* inherited.
*/
else
{
subsequentCalls = true;
- Serializable value = (Serializable) Vio.readValue(this, NONE, null,
+ Serializable value = Vio.readValue(this, NONE, null,
null, repository_id, null, null);
return value;
}
else
{
subsequentCalls = true;
- value = (Serializable) Vio.readValue(this, NONE, value, null, null,
+ value = Vio.readValue(this, NONE, value, null, null,
null, null);
return value;
}
{
subsequentCalls = true;
Serializable value = (Serializable) Vio.instantiateAnyWay(clz);
- value = (Serializable) Vio.readValue(this, NONE, value, null, null,
+ value = Vio.readValue(this, NONE, value, null, null,
null, null);
return value;
}
package gnu.CORBA.CDR;
-import java.io.DataInput;
import java.io.EOFException;
import java.io.FilterInputStream;
import java.io.IOException;
r = new byte[chunk_size + 256];
n = 0;
- reading: while (n < chunk_size)
+ while (n < chunk_size)
n += input.read(r, n, chunk_size - n);
output.write(r, 0, n);
}
* @param a_id a repository Id, if only one Id was specified in the stream.
* @param a_ids a repository Ids, if the multiple Ids were specified in te
* stream.
- * @param a_codabase a codebase, if it was specified in the stream.
+ * @param a_codebase a codebase, if it was specified in the stream.
*/
public gnuRuntime(String a_codebase, Object a_target)
{
import java.net.UnknownHostException;
import java.util.ArrayList;
-import org.omg.CORBA.LocalObject;
-import org.omg.CORBA.portable.Delegate;
-import org.omg.CORBA.portable.ObjectImpl;
-
/**
* This class provides support for the direct method invocations without
* involving the network in the case when both ORBs run on the same java
/**
* Get the record of the stored object.
*
- * @param object the stored object
+ * @param stored_object the stored object
*
* @return the record about the stored object, null if
* this object is not stored here.
* generated automatically.
*
* @param object the object to add.
- * @param port, on that the ORB will be listening to the remote
+ * @param port on that the ORB will be listening to the remote
* invocations.
*
* @return the newly created object record.
package gnu.CORBA.DynAn;
-import gnu.CORBA.TypeKindNamer;
-
import org.omg.CORBA.Any;
import org.omg.CORBA.CompletionStatus;
import org.omg.CORBA.ORB;
import org.omg.CORBA.ORB;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
-import org.omg.CORBA.TypeCodePackage.BadKind;
import org.omg.CORBA.portable.Streamable;
import org.omg.DynamicAny.DynAny;
import org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode;
// Get the discriminator variant.
- Variants:
for (int i = 0; i < final_type.member_count(); i++)
{
if (final_type.member_label(i).equal(da))
// Get the discriminator variant.
- Variants:
for (int i = 0; i < final_type.member_count(); i++)
{
if (final_type.member_label(i).equal(da))
package gnu.CORBA;
import org.omg.CORBA.BAD_OPERATION;
-import org.omg.CORBA.NO_IMPLEMENT;
import org.omg.CORBA.TypeCode;
import org.omg.CORBA.UNKNOWN;
-import org.omg.CORBA.UnknownUserException;
import org.omg.CORBA.portable.InputStream;
import org.omg.CORBA.portable.OutputStream;
import org.omg.CORBA.portable.Streamable;
public int request_id;
/**
- * Write the header.
+ * Read the header.
*
- * @param out a stream to write to.
+ * @param input a stream to read from.
*/
public abstract void read(InputStream input);
/**
* Write the header.
*
- * @param out a stream to write to.
+ * @param output a stream to write to.
*/
public abstract void write(OutputStream output);
}
import gnu.CORBA.CDR.AbstractCdrInput;
import gnu.CORBA.CDR.AbstractCdrOutput;
import gnu.CORBA.IOR;
-import gnu.CORBA.IOR.CodeSets_profile;
-
import java.io.IOException;
/**
if (service != null)
service.setSoTimeout(to_read);
- reading: while (n < r.length)
+ while (n < r.length)
{
n += source.read(r, n, r.length - n);
}
int dn;
n = 0;
- reading: while (n < h2.message_size)
+ while (n < h2.message_size)
{
dn = source.read(r, 0, h2.message_size - n);
extends gnu.CORBA.GIOP.CancelHeader
{
/**
- * Write the header.
+ * Read the header.
*
- * @param out a stream to write to.
+ * @param input a stream to read from.
*/
public void read(InputStream input)
{
/**
* Write the header.
*
- * @param out a stream to write to.
+ * @param output a stream to write to.
*/
public void write(OutputStream output)
{
/**
* Parse the provided stringifed reference.
*
- * @param stringified_reference, in the form of IOR:nnnnnn.....
+ * @param stringified_reference in the form of IOR:nnnnnn.....
*
* @return the parsed IOR
*
import org.omg.CORBA.OMGVMCID;
import org.omg.PortableInterceptor.IORInfo;
import org.omg.PortableInterceptor.IORInterceptor;
-import org.omg.PortableInterceptor.IORInterceptorOperations;
import org.omg.PortableInterceptor.IORInterceptor_3_0Operations;
import org.omg.PortableInterceptor.ObjectReferenceTemplate;
* Create the interceptor collection from the given properties, using the
* agreed naming convention.
*
- * @param orb the ORB being initialised.
+ * @param an_orb the ORB being initialised.
* @param props the cumulated set of properties where the orb initializer
* pattern is searched.
* @param an_args the argument string array, passed to ORB.init.
import java.io.IOException;
-import java.net.Socket;
-
/**
* The Classpath implementation of the {@link Delegate} functionality in the
* case, when the object was constructed from an IOR object. The IOR can be
* @param operation the method name
* @param parameters the method parameters
* @param returns the return value holder
- * @param exceptions the exceptions that can be thrown by the method
- * @param ctx_list the context list (null allowed)
*
* @return the created request.
*/
throws ApplicationException, RemarshalException
{
StreamBasedRequest request = (StreamBasedRequest) output;
- Forwardings: while (true)
+ while (true)
{
try
{
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
-import java.util.ArrayList;
import java.util.StringTokenizer;
/**
* representation. See {@link #toString(NameComponent)} for the
* description of this format.
*
- * @param name the string form of the name.
+ * @param a_name the string form of the name.
*
* @return the array form of the name.
*
* mapped to the local java class. The omg.org domain must be mapped into the
* object in either org/omg or gnu/CORBA namespace.
*
- * @param IDL name
+ * @param idl name
* @return instantiated object instance or null if no such available.
*/
public static java.lang.Object createObject(String idl, String suffix)
p = (portServer) portServers.get(i);
if (p.s_port == port)
{
- return (portServer) p;
+ return p;
}
}
// The server is not yet instantiated. Instantiate.
* internet address and port. With this information, the object can be found
* by another ORB, possibly located on remote computer.
*
- * @param the CORBA object
+ * @param forObject CORBA object
* @return the object IOR representation.
*
* @throws BAD_PARAM if the object has not been previously connected to this
* computer, possibly running a different (not necessary java) CORBA
* implementation.
*
- * @param ior the object IOR representation string.
+ * @param an_ior the object IOR representation string.
*
* @return the found CORBA object.
* @see object_to_string(org.omg.CORBA.Object)
import org.omg.CORBA.portable.OutputStream;
import org.omg.CORBA.portable.ValueFactory;
import org.omg.PortableInterceptor.ClientRequestInterceptorOperations;
-import org.omg.PortableInterceptor.IORInterceptorOperations;
import org.omg.PortableInterceptor.IORInterceptor_3_0Operations;
import org.omg.PortableInterceptor.ServerRequestInterceptorOperations;
* Get the record of the stored object. If the object is mapped several times
* under the different keys, one of the mappings is used.
*
- * @param object the stored object
+ * @param stored_object the stored object
*
* @return the record about the stored object, null if this object is not
* stored here.
* or adding the returned instance to any possible table.
*
* @param child_name the name of the poa being created.
- * @param manager the poa manager (never null).
+ * @param a_manager the poa manager (never null).
* @param policies the array of policies.
* @param an_orb the ORB for this POA.
*
* @param x the aom entry, where the object is replaced by value, returned by
* servant activator (if not null).
*
- * @param key the object key.
+ * @param object_key the object key.
*
* @param a_servant the servant that was passed as a parameter in the
* activation method.
/**
* Set the adapter activator for this POA.
*
- * @param the activator being set.
+ * @param an_activator the activator being set.
*/
public void the_activator(AdapterActivator an_activator)
{
import org.omg.CORBA.BAD_INV_ORDER;
import org.omg.CORBA.LocalObject;
import org.omg.PortableInterceptor.NON_EXISTENT;
-import org.omg.PortableInterceptor.ObjectReferenceTemplate;
import org.omg.PortableServer.POAManager;
import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
import org.omg.PortableServer.POAManagerPackage.State;
* Turns the associated POAs into active state, allowing them to receive
* and process requests.
*
- * @throws if the POAs are in the inactive state. If once inactivated,
- * the POA cannot be activated again. This method can only be called
- * to leave the holding or discarding state.
+ * @throws AdapterInactive if the POAs are in the inactive state.
+ * If once inactivated, the POA cannot be activated again. This
+ * method can only be called to leave the holding or discarding state.
*/
public void activate()
throws AdapterInactive
* assumed equal if they are connected to the same orb and poa under the same
* Id, regardless of they delegates.
*
- * @param another instance to check.
+ * @param other instance to check.
* @return
*/
public boolean _is_equivalent(org.omg.CORBA.Object other)
import gnu.CORBA.CDR.BufferedCdrOutput;
import org.omg.CORBA.ARG_IN;
-import org.omg.CORBA.ARG_INOUT;
import org.omg.CORBA.ARG_OUT;
import org.omg.CORBA.Any;
import org.omg.CORBA.Bounds;
package gnu.CORBA;
-import java.util.ArrayList;
-
import org.omg.CORBA.Bounds;
import org.omg.CORBA.ContextList;
package gnu.CORBA;
-import java.util.ArrayList;
-
import org.omg.CORBA.Bounds;
import org.omg.CORBA.ExceptionList;
import org.omg.CORBA.TypeCode;
import org.omg.PortableInterceptor.ForwardRequest;
import org.omg.PortableInterceptor.InvalidSlot;
-import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.net.BindException;
import java.net.Socket;
import java.util.ArrayList;
/**
* Get the number of digits in thid BigDecimal
*
- * @param x a BigDecimal to check.
+ * @param number a BigDecimal to check.
*/
public static int countDigits(BigDecimal number)
{
* Create a typecode that serves as a placeholder for
* the typecode with the given id.
*
- * @param id the Id of the type for that this type serves as a
+ * @param an_id the Id of the type for that this type serves as a
* placeholder.
*/
public RecursiveTypeCode(String an_id)
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
+import java.util.List;
import java.util.NoSuchElementException;
import java.util.ServiceConfigurationError;
import java.util.logging.Level;
* @throws IllegalArgumentException if <code>spi</code> is
* <code>null</code>.
*/
- public static Iterator lookupProviders(Class spi,
- ClassLoader loader)
+ public static <P> Iterator<P> lookupProviders(Class<P> spi,
+ ClassLoader loader)
{
return lookupProviders(spi, loader, false);
}
* @throws IllegalArgumentException if <code>spi</code> is
* <code>null</code>.
*/
- public static Iterator lookupProviders(Class spi,
- ClassLoader loader,
- boolean error)
+ public static <P> Iterator<P> lookupProviders(Class<P> spi,
+ ClassLoader loader,
+ boolean error)
{
String resourceName;
- Enumeration urls;
+ Enumeration<URL> urls;
if (spi == null)
throw new IllegalArgumentException();
throw new ServiceConfigurationError("Failed to access + " +
resourceName, ioex);
else
- return Collections.EMPTY_LIST.iterator();
+ {
+ List<P> empty = Collections.emptyList();
+ return empty.iterator();
+ }
}
- return new ServiceIterator(spi, urls, loader, error,
- AccessController.getContext());
+ return new ServiceIterator<P>(spi, urls, loader, error,
+ AccessController.getContext());
}
*
* @see #lookupProviders(Class, ClassLoader)
*/
- public static Iterator lookupProviders(Class spi)
+ public static <P> Iterator<P> lookupProviders(Class<P> spi)
{
ClassLoader ctxLoader;
*
* @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
*/
- private static final class ServiceIterator
- implements Iterator
+ private static final class ServiceIterator<P>
+ implements Iterator<P>
{
/**
* The service provider interface (usually an interface, sometimes
* an abstract class) which the services must implement.
*/
- private final Class spi;
+ private final Class<P> spi;
/**
* <code>META-INF/services/<org.foo.SomeService></code>,
* as returned by {@link ClassLoader#getResources(String)}.
*/
- private final Enumeration urls;
+ private final Enumeration<URL> urls;
/**
* {@link #next()}, or <code>null</code> if the iterator has
* already returned all service providers.
*/
- private Object nextProvider;
+ private P nextProvider;
/**
* True if a {@link ServiceConfigurationError} should be thrown
* @param securityContext the security context to use when loading
* and initializing service providers.
*/
- ServiceIterator(Class spi, Enumeration urls, ClassLoader loader,
+ ServiceIterator(Class<P> spi, Enumeration<URL> urls, ClassLoader loader,
boolean error, AccessControlContext securityContext)
{
this.spi = spi;
* @throws NoSuchElementException if {@link #hasNext} returns
* <code>false</code>.
*/
- public Object next()
+ public P next()
{
- Object result;
+ P result;
if (!hasNext())
throw new NoSuchElementException();
}
- private Object loadNextServiceProvider()
+ private P loadNextServiceProvider()
{
String line;
* active when calling lookupProviders.
*/
return AccessController.doPrivileged(
- new ServiceProviderLoadingAction(spi, line, loader),
+ new ServiceProviderLoadingAction<P>(spi, line, loader),
securityContext);
}
catch (Exception ex)
if (!urls.hasMoreElements())
return;
- currentURL = (URL) urls.nextElement();
+ currentURL = urls.nextElement();
try
{
reader = new BufferedReader(new InputStreamReader(
*
* @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
*/
-final class ServiceProviderLoadingAction
- implements PrivilegedExceptionAction
+final class ServiceProviderLoadingAction<P>
+ implements PrivilegedExceptionAction<P>
{
/**
* The interface to which the loaded service provider implementation
* must conform. Usually, this is a Java interface type, but it
* might also be an abstract class or even a concrete class.
*/
- private final Class spi;
+ private final Class<P> spi;
/**
* <code>providerName</code> or <code>loader</code> is
* <code>null</code>.
*/
- ServiceProviderLoadingAction(Class spi, String providerName,
+ ServiceProviderLoadingAction(Class<P> spi, String providerName,
ClassLoader loader)
{
if (spi == null || providerName == null || loader == null)
* no-argument constructor; or if there some other problem with
* creating a new instance of the service provider.
*/
- public Object run()
+ public P run()
throws Exception
{
- Class loadedClass;
- Object serviceProvider;
+ Class<P> loadedClass;
+ P serviceProvider;
- loadedClass = loader.loadClass(providerName);
+ loadedClass = (Class<P>) loader.loadClass(providerName);
serviceProvider = loadedClass.newInstance();
// Ensure that the loaded provider is actually implementing
return _exception.getClass();
else if (type == EVENT_EXCEPTION_CAUGHT)
if (_catchLocation.getMethod() != null)
- return new Boolean(true);
+ return Boolean.TRUE;
else
- return new Boolean(false);
+ return Boolean.FALSE;
return null;
}
package gnu.classpath.jdwp.event.filters;
-import gnu.classpath.jdwp.JdwpConstants;
import gnu.classpath.jdwp.event.Event;
import gnu.classpath.jdwp.exception.InvalidThreadException;
import gnu.classpath.jdwp.id.ThreadId;
import java.io.DataOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.nio.ByteBuffer;
/**
import gnu.classpath.jdwp.exception.JdwpException;
import gnu.classpath.jdwp.exception.JdwpInternalErrorException;
import gnu.classpath.jdwp.exception.NotImplementedException;
-import gnu.classpath.jdwp.id.ClassReferenceTypeId;
import gnu.classpath.jdwp.id.ObjectId;
import gnu.classpath.jdwp.id.ReferenceTypeId;
import gnu.classpath.jdwp.util.JdwpString;
--- /dev/null
+/* DefaultDaemonThreadFactory.java -- Factory for Deamon Threads.
+
+ Copyright (C) 2007 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 gnu.classpath.toolkit;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;;
+
+/**
+ * Create a new thread using all the default settings as returned by
+ * <code>Executors.defaultThreadFactory()</code> plus calling
+ * <code>thread.setDaemon(true)</code> on the newly created thread.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class DefaultDaemonThreadFactory implements ThreadFactory
+{
+ public Thread newThread(Runnable r)
+ {
+ Thread thread = Executors.defaultThreadFactory().newThread(r);
+ thread.setDaemon(true);
+ return thread;
+ }
+}
*
* @return the next visible <code>Component</code> in the List
*
- * @throws if there is no next element
+ * @throws NoSuchElementException if there is no next element
*/
public Object next()
{
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Toolkit;
-import java.awt.font.TextAttribute;
import java.awt.peer.DesktopPeer;
import java.awt.peer.RobotPeer;
import java.io.IOException;
import java.awt.Component;
import java.awt.Frame;
-import java.awt.Toolkit;
import java.lang.reflect.Field;
import java.security.AccessController;
package gnu.java.awt.font;
+import gnu.java.awt.java2d.ShapeWrapper;
+
import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphMetrics;
private AffineTransform[] transforms;
private int layoutFlags;
+ /**
+ * The cached non-transformed outline of this glyph vector.
+ */
+ private Shape cleanOutline;
/**
* Constructs a new GNUGlyphVector.
*/
public Shape getOutline()
{
- validate();
return getOutline(0.0f, 0.0f);
}
{
validate();
- GeneralPath outline = new GeneralPath();
- int len = glyphs.length;
- for (int i = 0; i < len; i++)
+ Shape outline;
+ if (cleanOutline == null)
{
- GeneralPath p = new GeneralPath(getGlyphOutline(i));
- outline.append(p, false);
+ GeneralPath path = new GeneralPath();
+ int len = glyphs.length;
+ for (int i = 0; i < len; i++)
+ {
+ GeneralPath p = new GeneralPath(getGlyphOutline(i));
+ path.append(p, false);
+ }
+ // Protect the cached instance from beeing modified by application
+ // code.
+ cleanOutline = new ShapeWrapper(path);
+ outline = cleanOutline;
+ }
+ else
+ {
+ outline = cleanOutline;
+ }
+ if (x != 0 || y != 0)
+ {
+ GeneralPath path = new GeneralPath(outline);
+ AffineTransform t = new AffineTransform();
+ t.translate(x, y);
+ path.transform(t);
+ outline = path;
}
- AffineTransform t = new AffineTransform();
- t.translate(x, y);
- outline.transform(t);
return outline;
}
--- /dev/null
+/* XFontPeer2.java -- A Java based TTF font peer for X
+ 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. */
+
+package gnu.java.awt.font;
+
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.font.LineMetrics;
+import java.awt.font.TextAttribute;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import gnu.java.awt.peer.ClasspathFontPeer;
+
+public class OpenTypeFontPeer
+ extends ClasspathFontPeer
+{
+
+ /**
+ * The font mapping as specified in the file fonts.properties.
+ */
+ private static Properties fontProperties;
+
+ /**
+ * The available font family names.
+ */
+ private static Set<String> availableFontNames;
+
+ /**
+ * Font spec to file mapping.
+ */
+ private static Map<String,Map<String,String>> fontToFileMap;
+
+ static
+ {
+ fontProperties = new Properties();
+ InputStream in = OpenTypeFontPeer.class.getResourceAsStream("fonts.properties");
+ try
+ {
+ fontProperties.load(in);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private class XLineMetrics
+ extends LineMetrics
+ {
+
+ private Font font;
+ private GlyphVector glyphVector;
+// private CharacterIterator characterIterator;
+// private int begin;
+// private int limit;
+ private FontRenderContext fontRenderContext;
+ XLineMetrics(Font f, CharacterIterator ci, int b, int l,
+ FontRenderContext rc)
+ {
+ font = f;
+// characterIterator = ci;
+// begin = b;
+// limit = l;
+ fontRenderContext = rc;
+ glyphVector = fontDelegate.createGlyphVector(font, fontRenderContext,
+ ci);
+ }
+
+ public float getAscent()
+ {
+ return fontDelegate.getAscent(font.getSize(), fontRenderContext.getTransform(),
+ fontRenderContext.isAntiAliased(),
+ fontRenderContext.usesFractionalMetrics(), true);
+ }
+
+ public int getBaselineIndex()
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public float[] getBaselineOffsets()
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public float getDescent()
+ {
+ return (int) fontDelegate.getDescent(font.getSize(), IDENDITY, false,
+ false, false);
+ }
+
+ public float getHeight()
+ {
+ return (float) glyphVector.getLogicalBounds().getHeight();
+ }
+
+ public float getLeading()
+ {
+ return getHeight() - getAscent() - getDescent();
+ }
+
+ public int getNumChars()
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public float getStrikethroughOffset()
+ {
+ return 0.F;
+ }
+
+ public float getStrikethroughThickness()
+ {
+ return 0.F;
+ }
+
+ public float getUnderlineOffset()
+ {
+ return 0.F;
+ }
+
+ public float getUnderlineThickness()
+ {
+ return 0.F;
+ }
+
+ }
+
+ private class XFontMetrics
+ extends FontMetrics
+ {
+ /**
+ * A cached point instance, to be used in #charWidth().
+ */
+ private Point2D cachedPoint = new Point2D.Double();
+
+ XFontMetrics(Font f)
+ {
+ super(f);
+ }
+
+ public int getAscent()
+ {
+ return (int) fontDelegate.getAscent(getFont().getSize(), IDENDITY,
+ false, false, false);
+ }
+
+ public int getDescent()
+ {
+ return (int) fontDelegate.getDescent(getFont().getSize(), IDENDITY,
+ false, false, false);
+ }
+
+ public int getHeight()
+ {
+ GlyphVector gv = fontDelegate.createGlyphVector(getFont(),
+ new FontRenderContext(IDENDITY, false, false),
+ new StringCharacterIterator("m"));
+ Rectangle2D b = gv.getVisualBounds();
+ return (int) b.getHeight();
+ }
+
+ public int charWidth(char c)
+ {
+ int code = fontDelegate.getGlyphIndex(c);
+ Point2D advance = cachedPoint;
+ fontDelegate.getAdvance(code, font.getSize2D(), IDENDITY,
+ false, false, true, advance);
+ return (int) advance.getX();
+ }
+
+ public int charsWidth(char[] chars, int offs, int len)
+ {
+ return stringWidth(new String(chars, offs, len));
+ }
+
+ public int stringWidth(String s)
+ {
+ GlyphVector gv = fontDelegate.createGlyphVector(getFont(),
+ new FontRenderContext(IDENDITY, false, false),
+ new StringCharacterIterator(s));
+ Rectangle2D b = gv.getVisualBounds();
+ return (int) b.getWidth();
+ }
+ }
+
+ /**
+ * The indendity transform, to be used in several methods.
+ */
+ private static final AffineTransform IDENDITY = new AffineTransform();
+
+ private FontDelegate fontDelegate;
+
+ public OpenTypeFontPeer(String name, int style, int size)
+ {
+ super(name, style, size);
+ try
+ {
+ String fontSpec = encodeFont(name, style);
+ String filename = mapFontToFilename(fontSpec);
+ File fontfile = new File(filename);
+ FileInputStream in = new FileInputStream(fontfile);
+ FileChannel ch = in.getChannel();
+ ByteBuffer buffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
+ fontfile.length());
+ fontDelegate = FontFactory.createFonts(buffer)[0];
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public OpenTypeFontPeer(String name, Map atts)
+ {
+ super(name, atts);
+ try
+ {
+ String fontSpec = encodeFont(name, atts);
+ String filename = mapFontToFilename(fontSpec);
+ File fontfile = new File(filename);
+ FileInputStream in = new FileInputStream(fontfile);
+ FileChannel ch = in.getChannel();
+ ByteBuffer buffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
+ fontfile.length());
+ fontDelegate = FontFactory.createFonts(buffer)[0];
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public boolean canDisplay(Font font, int c)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public int canDisplayUpTo(Font font, CharacterIterator i, int start, int limit)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public String getSubFamilyName(Font font, Locale locale)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public String getPostScriptName(Font font)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public int getNumGlyphs(Font font)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public int getMissingGlyphCode(Font font)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public byte getBaselineFor(Font font, char c)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public String getGlyphName(Font font, int glyphIndex)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public GlyphVector createGlyphVector(Font font, FontRenderContext frc, CharacterIterator ci)
+ {
+ return fontDelegate.createGlyphVector(font, frc, ci);
+ }
+
+ public GlyphVector createGlyphVector(Font font, FontRenderContext ctx, int[] glyphCodes)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public GlyphVector layoutGlyphVector(Font font, FontRenderContext frc, char[] chars, int start, int limit, int flags)
+ {
+ StringCharacterIterator i = new StringCharacterIterator(new String(chars), start, limit, 0);
+ return fontDelegate.createGlyphVector(font, frc, i);
+ }
+
+ public FontMetrics getFontMetrics(Font font)
+ {
+ return new XFontMetrics(font);
+ }
+
+ public boolean hasUniformLineMetrics(Font font)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public LineMetrics getLineMetrics(Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc)
+ {
+ return new XLineMetrics(font, ci, begin, limit, rc);
+ }
+
+ public Rectangle2D getMaxCharBounds(Font font, FontRenderContext rc)
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ /**
+ * Encodes a font name + style + size specification into a X logical font
+ * description (XLFD) as described here:
+ *
+ * http://www.meretrx.com/e93/docs/xlfd.html
+ *
+ * This is implemented to look up the font description in the
+ * fonts.properties of this package.
+ *
+ * @param name the font name
+ * @param atts the text attributes
+ *
+ * @return the encoded font description
+ */
+ public static String encodeFont(String name, Map atts)
+ {
+ String family = name;
+ if (family == null || family.equals(""))
+ family = (String) atts.get(TextAttribute.FAMILY);
+ if (family == null)
+ family = "SansSerif";
+
+ int style = 0;
+ // Detect italic attribute.
+ Float posture = (Float) atts.get(TextAttribute.POSTURE);
+ if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
+ style |= Font.ITALIC;
+
+ // Detect bold attribute.
+ Float weight = (Float) atts.get(TextAttribute.WEIGHT);
+ if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
+ style |= Font.BOLD;
+
+ return encodeFont(name, style);
+ }
+
+ /**
+ * Encodes a font name + style into a combined string.
+ *
+ * This is implemented to look up the font description in the
+ * fonts.properties of this package.
+ *
+ * @param name the font name
+ * @param style the font style
+ *
+ * @return the encoded font description
+ */
+ static String encodeFont(String name, int style)
+ {
+ StringBuilder key = new StringBuilder();
+ key.append(validName(name));
+ key.append('/');
+ switch (style)
+ {
+ case Font.BOLD:
+ key.append("b");
+ break;
+ case Font.ITALIC:
+ key.append("i");
+ break;
+ case (Font.BOLD | Font.ITALIC):
+ key.append("bi");
+ break;
+ case Font.PLAIN:
+ default:
+ key.append("p");
+
+ }
+
+ return key.toString();
+ }
+
+ /**
+ * Checks the specified font name for a valid font name. If the font name
+ * is not known, then this returns 'sansserif' as fallback.
+ *
+ * @param name the font name to check
+ *
+ * @return a valid font name
+ */
+ static String validName(String name)
+ {
+ String retVal;
+ Set<String> fontNames = getFontNames();
+ if (fontNames.contains(name))
+ {
+ retVal = name;
+ }
+ else
+ {
+ retVal = "SansSerif";
+ }
+ return retVal;
+ }
+
+ public static String[] getAvailableFontFamilyNames(Locale l)
+ {
+ Set<String> fontNames = getFontNames();
+ int numNames = fontNames.size();
+ String[] ret = fontNames.toArray(new String[numNames]);
+ return ret;
+ }
+
+ private static synchronized Set<String> getFontNames()
+ {
+ if (availableFontNames == null)
+ {
+ HashSet<String> familyNames = new HashSet<String>();
+ for (Object o : fontProperties.keySet())
+ {
+ if (o instanceof String)
+ {
+ String key = (String) o;
+ int slashIndex = key.indexOf('/');
+ String name = key.substring(0, slashIndex);
+ familyNames.add(name);
+ }
+ }
+ availableFontNames = familyNames;
+ }
+ return availableFontNames;
+ }
+
+ /**
+ * Takes a font spec as returned by {@link #encodeFont(String, int)},
+ * and returns the corresponding font file, or <code>null</code> if no such
+ * font mapping exists.
+ *
+ * @param fontSpec font name and style as returned by
+ * {@link #encodeFont(String, int)}
+ *
+ * @return filename of the corresponding font file
+ */
+ private synchronized String mapFontToFilename(String fontSpec)
+ {
+ if (fontToFileMap == null)
+ {
+ fontToFileMap = new HashMap<String,Map<String,String>>();
+
+ // Initialize font spec to file mapping according to the
+ // font.properties.
+ for (Object o : fontProperties.keySet())
+ {
+ if (o instanceof String)
+ {
+ String key = (String) o;
+ int slashIndex = key.indexOf('/');
+ String name = key.substring(0, slashIndex);
+ String spec = key.substring(slashIndex + 1);
+ // Handle aliases in the 2nd pass below.
+ if (! spec.equals("a"))
+ {
+ Map<String,String> specToFileMap = fontToFileMap.get(name);
+ if (specToFileMap == null)
+ {
+ specToFileMap = new HashMap<String,String>();
+ fontToFileMap.put(name, specToFileMap);
+ }
+ specToFileMap.put(spec, fontProperties.getProperty(key));
+ }
+ }
+ }
+ // 2nd pass for handling aliases.
+ for (Object o : fontProperties.keySet())
+ {
+ if (o instanceof String)
+ {
+ String key = (String) o;
+ int slashIndex = key.indexOf('/');
+ String name = key.substring(0, slashIndex);
+ String spec = key.substring(slashIndex + 1);
+ // Handle aliases in the 2nd pass below.
+ if (spec.equals("a"))
+ {
+ String alias = fontProperties.getProperty(key);
+ Map<String,String> specToFileMap = fontToFileMap.get(alias);
+ fontToFileMap.put(name, specToFileMap);
+ }
+ }
+ }
+ }
+ // Look up font file.
+ int slashIndex = fontSpec.indexOf('/');
+ String name = fontSpec.substring(0, slashIndex);
+ String spec = fontSpec.substring(slashIndex + 1);
+ return fontToFileMap.get(name).get(spec);
+ }
+}
--- /dev/null
+/* AsyncImage.java -- Loads images asynchronously
+ Copyright (C) 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. */
+
+
+package gnu.java.awt.image;
+
+
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.image.ImageConsumer;
+import java.awt.image.ImageObserver;
+import java.awt.image.ImageProducer;
+import java.util.HashSet;
+import java.util.Iterator;
+
+/**
+ * Supports asynchronous loading of images.
+ */
+public class AsyncImage
+ extends Image
+{
+
+ /**
+ * The image source for AsyncImages.
+ */
+ private class AsyncImageSource
+ implements ImageProducer
+ {
+ /**
+ * The real image source, if already present, or <code>null</code>
+ * otherwise.
+ */
+ private ImageProducer realSource;
+
+ public void addConsumer(ImageConsumer ic)
+ {
+ startProduction(ic);
+ }
+
+ public boolean isConsumer(ImageConsumer ic)
+ {
+ return false;
+ }
+
+ public void removeConsumer(ImageConsumer ic)
+ {
+ // Nothing to do here.
+ }
+
+ public void requestTopDownLeftRightResend(ImageConsumer ic)
+ {
+ startProduction(ic);
+ }
+
+ public void startProduction(ImageConsumer ic)
+ {
+ ImageProducer ip = getRealSource();
+ if (ip == null)
+ {
+ ic.setDimensions(1, 1);
+ ic.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
+ }
+ else
+ {
+ ip.startProduction(ic);
+ }
+ }
+
+ /**
+ * Returns the real image source, if already present. Otherwise, this
+ * returns <code>null</code>.
+ *
+ * @return the real image source, or <code>null</code> if not present
+ */
+ private ImageProducer getRealSource()
+ {
+ synchronized (AsyncImage.this)
+ {
+ ImageProducer source = realSource;
+ if (source == null)
+ {
+ Image ri = realImage;
+ if (ri != null)
+ {
+ realSource = source = ri.getSource();
+ }
+ }
+ return source;
+ }
+ }
+ }
+
+ /**
+ * The real image. This is null as long as the image is not complete.
+ */
+ private volatile Image realImage;
+
+ /**
+ * The image observers.
+ *
+ * This is package private to avoid accessor methods.
+ */
+ HashSet<ImageObserver> observers;
+
+ private volatile boolean complete = false;
+
+ /**
+ * Creates a new AsyncImage.
+ */
+ AsyncImage()
+ {
+ observers = new HashSet<ImageObserver>();
+ }
+
+ public void flush()
+ {
+ // Nothing to do here.
+ }
+
+ public Graphics getGraphics()
+ {
+ Image r = realImage;
+ Graphics g = null;
+ if (r != null)
+ g = r.getGraphics(); // Should we return some dummy graphics instead?
+ return g;
+ }
+
+ public boolean isComplete() {
+ return complete;
+ }
+
+ public int getHeight(ImageObserver observer)
+ {
+ addObserver(observer);
+ int height = -1;
+ waitForImage(observer);
+ Image r = realImage;
+ if (r != null)
+ height = r.getHeight(observer);
+ return height;
+ }
+
+ public Object getProperty(String name, ImageObserver observer)
+ {
+ addObserver(observer);
+ Image r = realImage;
+ Object prop = null;
+ if (r != null)
+ prop = r.getProperty(name, observer);
+ return prop;
+ }
+
+ public ImageProducer getSource()
+ {
+ return new AsyncImageSource();
+ }
+
+ public int getWidth(ImageObserver observer)
+ {
+ addObserver(observer);
+ int width = -1;
+ waitForImage(observer);
+ Image r = realImage;
+ if (r != null)
+ width = r.getWidth(observer);
+ return width;
+ }
+
+ public void addObserver(ImageObserver obs)
+ {
+ if (obs != null)
+ {
+ synchronized (this)
+ {
+ // This field gets null when image loading is complete and we don't
+ // need to store any more observers.
+ HashSet<ImageObserver> observs = observers;
+ if (observs != null)
+ {
+ observs.add(obs);
+ }
+ }
+ }
+ }
+
+ public boolean prepareImage(int w, int h, ImageObserver obs)
+ {
+ addObserver(obs);
+ return realImage != null;
+ }
+
+ public int checkImage(int w, int h, ImageObserver obs)
+ {
+ addObserver(obs);
+ int flags = 0;
+ if (realImage != null)
+ flags = ImageObserver.ALLBITS | ImageObserver.WIDTH
+ | ImageObserver.HEIGHT | ImageObserver.PROPERTIES;
+ return flags;
+ }
+
+ public Image getRealImage()
+ {
+ return realImage;
+ }
+
+ public void setRealImage(Image im)
+ {
+ realImage = im;
+ int status = ImageObserver.HEIGHT | ImageObserver.WIDTH;
+ notifyObservers(status, 0, 0, im.getWidth(null), im.getHeight(null));
+ }
+
+ public void notifyObservers(int status, int x, int y, int w, int h)
+ {
+ synchronized (this)
+ {
+ HashSet observs = observers;
+ if (observs != null)
+ {
+ Iterator i = observs.iterator();
+ while (i.hasNext())
+ {
+ ImageObserver obs = (ImageObserver) i.next();
+ boolean complete = obs.imageUpdate(this, status, x, y, realImage.getWidth(obs), realImage.getHeight(obs));
+ if (complete) // Remove completed observers.
+ i.remove();
+ }
+ }
+ if ((status & ImageObserver.ALLBITS) != 0)
+ {
+ complete = true;
+ notifyAll();
+ }
+ }
+ }
+
+ /**
+ * Waits for the image to be loaded completely, if the image observer
+ * is <code>null</code>. Otherwise this is not necessary, because the
+ * image observer can be notified about later completion.
+ *
+ * @param observer the image observer
+ */
+ public void waitForImage(ImageObserver observer)
+ {
+ if (!complete && observer == null)
+ {
+ synchronized (this)
+ {
+ while (! complete)
+ {
+ try
+ {
+ wait();
+ }
+ catch (InterruptedException ex)
+ {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+/* ImageConverter.java -- Loads images asynchronously
+ Copyright (C) 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. */
+
+
+package gnu.java.awt.image;
+
+import gnu.java.awt.image.AsyncImage;
+
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Transparency;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.ImageConsumer;
+import java.awt.image.IndexColorModel;
+import java.awt.image.ImageObserver;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.awt.image.WritableRaster;
+import java.util.Hashtable;
+
+/**
+ * Convert an Image to a BufferedImage.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class ImageConverter implements ImageConsumer
+{
+
+ public static final String IMAGE_TRANSPARENCY_PROPERTY =
+ "gnu.awt.image.transparency";
+
+ public static final String IMAGE_PROPERTIES_PROPERTY =
+ "gnu.awt.image.properties";
+
+ private AsyncImage image;
+ private BufferedImage bImage;
+ private Hashtable imageProperties;
+ private int width, height;
+ private ColorModel colorModel;
+ private ColorModel targetColorModel;
+
+ public ImageConverter()
+ {
+ width = 0;
+ height = 0;
+ image = new AsyncImage();
+ }
+
+ public void setDimensions(int w, int h)
+ {
+ width = w;
+ height = h;
+ }
+
+ public void setProperties(Hashtable props)
+ {
+ // Ignore for now.
+ }
+
+ public void setColorModel(ColorModel model)
+ {
+ colorModel = model;
+ }
+
+ public void setHints(int flags)
+ {
+ // Ignore for now.
+ }
+
+ public void setPixels(int x, int y, int w, int h, ColorModel model,
+ byte[] pixels, int offset, int scansize)
+ {
+ model = setupColorModel(model);
+
+ if (bImage == null)
+ {
+ createImage();
+ }
+
+ Integer t = (Integer) imageProperties.get("gnu.awt.image.transparency");
+ int transparency = t.intValue();
+
+ if(targetColorModel.equals(model))
+ {
+ transparency = transferPixels(x, y, w, h, model, pixels, offset,
+ scansize, transparency);
+ }
+ else if (model instanceof IndexColorModel
+ && targetColorModel.equals(ColorModel.getRGBdefault()))
+ {
+ transparency = convertIndexColorModelToSRGB(x, y, w, h,
+ (IndexColorModel) model,
+ pixels, offset, scansize,
+ transparency);
+ }
+ else
+ {
+ transparency = convertPixels(x, y, w, h, model, pixels, offset,
+ scansize, transparency);
+ }
+
+ imageProperties.put("gnu.awt.image.transparency",
+ Integer.valueOf(transparency));
+ }
+
+ public void setPixels(int x, int y, int w, int h, ColorModel model,
+ int[] pixels, int offset, int scansize)
+ {
+ model = setupColorModel(model);
+ if (bImage == null)
+ {
+ createImage();
+ }
+
+ Integer t = (Integer) imageProperties.get(IMAGE_TRANSPARENCY_PROPERTY);
+ int transparency= t.intValue();
+
+ if (targetColorModel.equals(model))
+ {
+ transparency = transferPixels(x, y, w, h, model, pixels, offset,
+ scansize, transparency);
+ }
+ else if (model instanceof IndexColorModel
+ && targetColorModel.equals(ColorModel.getRGBdefault()))
+ {
+ transparency = convertIndexColorModelToSRGB(x, y, w, h,
+ (IndexColorModel) model,
+ pixels, offset, scansize,
+ transparency);
+ }
+ else
+ {
+ transparency = convertPixels(x, y, w, h, model, pixels, offset,
+ scansize, transparency);
+ }
+
+ imageProperties.put(IMAGE_TRANSPARENCY_PROPERTY,
+ Integer.valueOf(transparency));
+
+ }
+
+ /**
+ * Initialize the color model for this setPixels run: <br/>
+ * 1. if no color model was given use the hinted color model <br/>
+ * 2. if no color model was given and non was hinted use the default sRGB color model. <br/>
+ * Also:<br/>
+ * If no target color model was set use the color model of the given pixels.
+ * @param model
+ * @return
+ */
+ private ColorModel setupColorModel(ColorModel model)
+ {
+ // If the given color model is null use the previously hinted color model.
+ if (model == null)
+ model = colorModel;
+
+ // If no color model was given or hinted use default sRGB.
+ if (model == null)
+ model = ColorModel.getRGBdefault();
+
+ // If no specific color model was requested for the target use the current
+ // pixels model.
+ if (targetColorModel == null)
+ targetColorModel = model;
+ targetColorModel = ColorModel.getRGBdefault();
+ return model;
+ }
+
+ /**
+ * Creates the image instance into which the pixel data is converted.
+ */
+ private void createImage()
+ {
+ if (imageProperties == null)
+ {
+ imageProperties = new Hashtable();
+ }
+
+ imageProperties.put(IMAGE_TRANSPARENCY_PROPERTY,
+ Integer.valueOf(Transparency.OPAQUE));
+ imageProperties.put(IMAGE_PROPERTIES_PROPERTY, imageProperties);
+
+ // For the sRGB case let the GraphicsEnvironment create an image for us.
+ if (ColorModel.getRGBdefault().equals(targetColorModel))
+ {
+ bImage = GraphicsEnvironment.getLocalGraphicsEnvironment()
+ .getDefaultScreenDevice()
+ .getDefaultConfiguration()
+ .createCompatibleImage(width, height, Transparency.TRANSLUCENT);
+ }
+ else
+ {
+ WritableRaster raster =
+ targetColorModel.createCompatibleWritableRaster(width, height);
+ bImage = new BufferedImage(targetColorModel, raster, false,
+ imageProperties);
+ }
+ image.setRealImage(bImage);
+ return;
+ }
+
+ /**
+ * Transfers pixels into a raster of the same color model.
+ *
+ * @param x the X coordinate of the source pixel rectangle
+ * @param y the Y coordinate of the source pixel rectangle
+ * @param w the width of the source pixel rectangle
+ * @param h the height of the source pixel rectangle
+ * @param model the color model of the source pixels
+ * @param pixels the pixel data
+ * @param offset the offset in the pixel array
+ * @param scansize the scanline size
+ * @param transparency the assumed transparency
+ *
+ * @return the determined transparency
+ */
+ private int transferPixels(int x, int y, int w, int h, ColorModel model,
+ byte[] pixels, int offset, int scansize,
+ int transparency)
+ {
+ // If we have the same color model, then we can simply drop
+ // the pixel value into the target raster.
+ bImage.getRaster().setDataElements(x, y, w, h, pixels);
+
+ for (int yy = 0; yy < h; yy++)
+ {
+ for (int xx = 0; xx < w; xx++)
+ {
+ int pixel = 0xFF & pixels[yy * scansize + xx + offset];
+ int alpha = model.getAlpha(pixel);
+ transparency = updateTransparency(alpha, transparency);
+ }
+ }
+ return transparency;
+ }
+
+ /**
+ * Transfers pixels into a raster of the same color model.
+ *
+ * @param x the X coordinate of the source pixel rectangle
+ * @param y the Y coordinate of the source pixel rectangle
+ * @param w the width of the source pixel rectangle
+ * @param h the height of the source pixel rectangle
+ * @param model the color model of the source pixels
+ * @param pixels the pixel data
+ * @param offset the offset in the pixel array
+ * @param scansize the scanline size
+ * @param transparency the assumed transparency
+ *
+ * @return the determined transparency
+ */
+ private int transferPixels(int x, int y, int w, int h, ColorModel model,
+ int[] pixels, int offset, int scansize,
+ int transparency)
+ {
+ // If we have the same color model, then we can simply drop
+ // the pixel value into the target raster.
+ bImage.getRaster().setDataElements(x, y, w, h, pixels);
+
+ for (int yy = 0; yy < h; yy++)
+ {
+ for (int xx = 0; xx < w; xx++)
+ {
+ int pixel = pixels[yy * scansize + xx + offset];
+ int alpha = model.getAlpha(pixel);
+ transparency = updateTransparency(alpha, transparency);
+ }
+ }
+ return transparency;
+ }
+
+ /**
+ * Converts pixel from one color model to another, and stores them in the
+ * target image.
+ *
+ * @param x the X coordinate of the source pixel rectangle
+ * @param y the Y coordinate of the source pixel rectangle
+ * @param w the width of the source pixel rectangle
+ * @param h the height of the source pixel rectangle
+ * @param model the color model of the source pixels
+ * @param pixels the pixel data
+ * @param offset the offset in the pixel array
+ * @param scansize the scanline size
+ * @param transparency the assumed transparency
+ *
+ * @return the determined transparency
+ */
+ private int convertPixels(int x, int y, int w, int h, ColorModel model,
+ byte[] pixels, int offset, int scansize,
+ int transparency)
+ {
+ // If the color models are not the same, we must convert the
+ // pixel values from one model to the other.
+ Object dataEl = null;
+ // Convert pixels to the destination color model.
+ for (int yy = 0; yy < h; yy++)
+ {
+ for (int xx = 0; xx < w; xx++)
+ {
+ int pixel = 0xFF & pixels[yy * scansize + xx + offset];
+ int rgb = model.getRGB(pixel);
+ int alpha = model.getAlpha(pixel);
+ transparency = updateTransparency(alpha, transparency);
+ dataEl = targetColorModel.getDataElements(rgb, dataEl);
+ bImage.getRaster().setDataElements(x + xx, y + yy, dataEl);
+ }
+ }
+ return transparency;
+ }
+
+ /**
+ * Converts pixel from one color model to another, and stores them in the
+ * target image.
+ *
+ * @param x the X coordinate of the source pixel rectangle
+ * @param y the Y coordinate of the source pixel rectangle
+ * @param w the width of the source pixel rectangle
+ * @param h the height of the source pixel rectangle
+ * @param model the color model of the source pixels
+ * @param pixels the pixel data
+ * @param offset the offset in the pixel array
+ * @param scansize the scanline size
+ * @param transparency the assumed transparency
+ *
+ * @return the determined transparency
+ */
+ private int convertPixels(int x, int y, int w, int h, ColorModel model,
+ int[] pixels, int offset, int scansize,
+ int transparency)
+ {
+ // If the color models are not the same, we must convert the
+ // pixel values from one model to the other.
+ Object dataEl = null;
+ // Convert pixels to the destination color model.
+ for (int yy = 0; yy < h; yy++)
+ {
+ for (int xx = 0; xx < w; xx++)
+ {
+ int pixel = pixels[yy * scansize + xx + offset];
+ int rgb = model.getRGB(pixel);
+ int alpha = model.getAlpha(pixel);
+ transparency = updateTransparency(alpha, transparency);
+ dataEl = targetColorModel.getDataElements(rgb, dataEl);
+ bImage.getRaster().setDataElements(x + xx, y + yy, dataEl);
+ }
+ }
+ return transparency;
+ }
+
+ /**
+ * Converts pixels from an index color model to the target image.
+ *
+ * @param x the X coordinate of the source pixel rectangle
+ * @param y the Y coordinate of the source pixel rectangle
+ * @param w the width of the source pixel rectangle
+ * @param h the height of the source pixel rectangle
+ * @param model the color model of the source pixels
+ * @param pixels the pixel data
+ * @param offset the offset in the pixel array
+ * @param scansize the scanline size
+ * @param transparency the assumed transparency
+ *
+ * @return the determined transparency
+ */
+ private int convertIndexColorModelToSRGB(int x, int y, int w, int h,
+ IndexColorModel model,
+ byte[] pixels, int offset,
+ int scansize, int transparency)
+ {
+
+ int mapSize = model.getMapSize();
+ int[] colorMap = new int[mapSize];
+ for(int i=0; i < mapSize; i++)
+ {
+ colorMap[i] = model.getRGB(i);
+ }
+
+ WritableRaster raster = bImage.getRaster();
+ SinglePixelPackedSampleModel sampleMode =
+ (SinglePixelPackedSampleModel) raster.getSampleModel();
+ DataBuffer dataBuffer = (DataBuffer) raster.getDataBuffer();
+
+ int rasterOffset = sampleMode.getOffset(x,y)+dataBuffer.getOffset();
+ int rasterScanline = sampleMode.getScanlineStride();
+
+ for (int yy = 0; yy < h; yy++)
+ {
+ int xoffset = offset;
+ for (int xx = 0; xx < w; xx++)
+ {
+ int argb = colorMap[(pixels[xoffset++] & 0xFF)];
+ dataBuffer.setElem(rasterOffset+xx, argb);
+ int alpha = (argb >>> 24);
+ transparency = updateTransparency(alpha, transparency);
+ }
+ offset += scansize;
+ rasterOffset += rasterScanline;
+ }
+
+ return transparency;
+ }
+
+ /**
+ * Converts pixels from an index color model to the target image.
+ *
+ * @param x the X coordinate of the source pixel rectangle
+ * @param y the Y coordinate of the source pixel rectangle
+ * @param w the width of the source pixel rectangle
+ * @param h the height of the source pixel rectangle
+ * @param model the color model of the source pixels
+ * @param pixels the pixel data
+ * @param offset the offset in the pixel array
+ * @param scansize the scanline size
+ * @param transparency the assumed transparency
+ *
+ * @return the determined transparency
+ */
+ private int convertIndexColorModelToSRGB(int x, int y, int w, int h,
+ IndexColorModel model, int[] pixels,
+ int offset, int scansize,
+ int transparency)
+ {
+ int mapSize = model.getMapSize();
+ int[] colorMap = new int[mapSize];
+ for(int i=0; i < mapSize; i++)
+ {
+ colorMap[i] = model.getRGB(i);
+ }
+
+ WritableRaster raster = bImage.getRaster();
+ SinglePixelPackedSampleModel sampleMode =
+ (SinglePixelPackedSampleModel) raster.getSampleModel();
+ DataBuffer dataBuffer = (DataBuffer)raster.getDataBuffer();
+
+ int rasterOffset = sampleMode.getOffset(x, y) + dataBuffer.getOffset();
+ int rasterScanline = sampleMode.getScanlineStride();
+
+ for (int yy = 0; yy < h; yy++)
+ {
+ int xoffset = offset;
+ for (int xx = 0; xx < w; xx++)
+ {
+ int argb = colorMap[pixels[xoffset++]];
+ dataBuffer.setElem(rasterOffset + xx, argb);
+ int alpha = (argb >>> 24);
+ transparency = updateTransparency(alpha, transparency);
+ }
+ offset += scansize;
+ rasterOffset += rasterScanline;
+ }
+
+ return transparency;
+ }
+
+ /**
+ * Updates the transparency information according to the alpha pixel value.
+ *
+ * @param alpha the alpha pixel value
+ * @param transparency the old transparency
+ *
+ * @return the updated transparency
+ */
+ private int updateTransparency(int alpha, int transparency)
+ {
+ if (alpha != 0xFF)
+ {
+ if (alpha == 0x00 && transparency <= Transparency.BITMASK)
+ {
+ transparency = Transparency.BITMASK;
+ }
+ else if (transparency < Transparency.TRANSLUCENT)
+ {
+ transparency = Transparency.TRANSLUCENT;
+ }
+ }
+ return transparency;
+ }
+
+ public void imageComplete(int status)
+ {
+ image.notifyObservers(ImageObserver.ALLBITS, 0, 0, width, height);
+ }
+
+ public void setTargetColorModel(ColorModel model)
+ {
+ targetColorModel = model;
+ }
+
+ public Image getImage()
+ {
+ return image;
+ }
+}
package gnu.java.awt.java2d;
+import gnu.java.util.LRUCache;
+
import java.awt.AWTError;
import java.awt.AlphaComposite;
import java.awt.AWTPermission;
import java.awt.image.WritableRaster;
import java.awt.image.renderable.RenderableImage;
import java.text.AttributedCharacterIterator;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
/**
implements Cloneable, Pixelizer
{
+ /**
+ * Wether we use anti aliasing for rendering text by default or not.
+ */
+ private static final boolean DEFAULT_TEXT_AA =
+ Boolean.getBoolean("gnu.java2d.default_text_aa");
+
/**
* The default font to use on the graphics object.
*/
private static final Font FONT = new Font("SansSerif", Font.PLAIN, 12);
+ /**
+ * The size of the LRU cache used for caching GlyphVectors.
+ */
+ private static final int GV_CACHE_SIZE = 50;
+
/**
* Caches certain shapes to avoid massive creation of such Shapes in
* the various draw* and fill* methods.
*/
- private static final ThreadLocal<ShapeCache> shapeCache =
- new ThreadLocal<ShapeCache>();
+ private static final ShapeCache shapeCache = new ShapeCache();
+
+ /**
+ * A pool of scanline converters. It is important to reuse scanline
+ * converters because they keep their datastructures in place. We pool them
+ * for use in multiple threads.
+ */
+ private static final LinkedList<ScanlineConverter> scanlineConverters =
+ new LinkedList<ScanlineConverter>();
+
+ /**
+ * Caches glyph vectors for better drawing performance.
+ */
+ private static final Map<TextCacheKey,GlyphVector> gvCache =
+ Collections.synchronizedMap(new LRUCache<TextCacheKey,GlyphVector>(GV_CACHE_SIZE));
/**
- * The scanline converters by thread.
+ * This key is used to search in the gvCache without allocating a new
+ * key each time.
*/
- private static final ThreadLocal<ScanlineConverter> scanlineConverters =
- new ThreadLocal<ScanlineConverter>();
+ private static final TextCacheKey searchTextKey = new TextCacheKey();
/**
* The transformation for this Graphics2D instance
*/
public void drawString(String text, int x, int y)
{
- if (isOptimized)
- rawDrawString(text, x, y);
- else
+ GlyphVector gv;
+ synchronized (searchTextKey)
{
- FontRenderContext ctx = getFontRenderContext();
- GlyphVector gv = font.createGlyphVector(ctx, text.toCharArray());
- drawGlyphVector(gv, x, y);
+ TextCacheKey tck = searchTextKey;
+ FontRenderContext frc = getFontRenderContext();
+ tck.setString(text);
+ tck.setFont(font);
+ tck.setFontRenderContext(frc);
+ if (gvCache.containsKey(tck))
+ {
+ gv = gvCache.get(tck);
+ }
+ else
+ {
+ gv = font.createGlyphVector(frc, text.toCharArray());
+ gvCache.put(new TextCacheKey(text, font, frc), gv);
+ }
}
+ drawGlyphVector(gv, x, y);
}
/**
public FontRenderContext getFontRenderContext()
{
- return new FontRenderContext(transform, false, true);
+ // Protect our own transform from beeing modified.
+ AffineTransform tf = new AffineTransform(transform);
+ // TODO: Determine antialias and fractionalmetrics parameters correctly.
+ return new FontRenderContext(tf, false, true);
}
/**
// Copy the clip. If it's a Rectangle, preserve that for optimization.
if (clip instanceof Rectangle)
copy.clip = new Rectangle((Rectangle) clip);
- else
+ else if (clip != null)
copy.clip = new GeneralPath(clip);
+ else
+ copy.clip = null;
copy.renderingHints = new RenderingHints(null);
copy.renderingHints.putAll(renderingHints);
}
else
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.line == null)
sc.line = new Line2D.Float();
sc.line.setLine(x1, y1, x2, y2);
{
if (isOptimized)
{
- rawDrawRect(x, y, w, h);
+ int tx = (int) transform.getTranslateX();
+ int ty = (int) transform.getTranslateY();
+ rawDrawRect(x + tx, y + ty, w, h);
}
else
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.rect == null)
sc.rect = new Rectangle();
sc.rect.setBounds(x, y, w, h);
}
else
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.rect == null)
sc.rect = new Rectangle();
sc.rect.setBounds(x, y, width, height);
public void drawRoundRect(int x, int y, int width, int height, int arcWidth,
int arcHeight)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.roundRect == null)
sc.roundRect = new RoundRectangle2D.Float();
sc.roundRect.setRoundRect(x, y, width, height, arcWidth, arcHeight);
public void fillRoundRect(int x, int y, int width, int height, int arcWidth,
int arcHeight)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.roundRect == null)
sc.roundRect = new RoundRectangle2D.Float();
sc.roundRect.setRoundRect(x, y, width, height, arcWidth, arcHeight);
*/
public void drawOval(int x, int y, int width, int height)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.ellipse == null)
sc.ellipse = new Ellipse2D.Float();
sc.ellipse.setFrame(x, y, width, height);
*/
public void fillOval(int x, int y, int width, int height)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.ellipse == null)
sc.ellipse = new Ellipse2D.Float();
sc.ellipse.setFrame(x, y, width, height);
public void drawArc(int x, int y, int width, int height, int arcStart,
int arcAngle)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.arc == null)
sc.arc = new Arc2D.Float();
sc.arc.setArc(x, y, width, height, arcStart, arcAngle, Arc2D.OPEN);
public void fillArc(int x, int y, int width, int height, int arcStart,
int arcAngle)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.arc == null)
sc.arc = new Arc2D.Float();
sc.arc.setArc(x, y, width, height, arcStart, arcAngle, Arc2D.PIE);
public void drawPolyline(int[] xPoints, int[] yPoints, int npoints)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.polyline == null)
sc.polyline = new GeneralPath();
GeneralPath p = sc.polyline;
*/
public void drawPolygon(int[] xPoints, int[] yPoints, int npoints)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.polygon == null)
sc.polygon = new Polygon();
sc.polygon.reset();
*/
public void fillPolygon(int[] xPoints, int[] yPoints, int npoints)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.polygon == null)
sc.polygon = new Polygon();
sc.polygon.reset();
{
Object v = renderingHints.get(RenderingHints.KEY_TEXT_ANTIALIASING);
// We default to antialiasing for text rendering.
- antialias = (v == RenderingHints.VALUE_TEXT_ANTIALIAS_ON
- || v == RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
+ antialias = v == RenderingHints.VALUE_TEXT_ANTIALIAS_ON
+ || (v == RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT
+ && DEFAULT_TEXT_AA);
}
else
{
}
ScanlineConverter sc = getScanlineConverter();
int resolution = 0;
+ int yRes = 0;
if (antialias)
{
// Adjust resolution according to rendering hints.
resolution = 2;
+ yRes = 4;
}
- sc.renderShape(this, s, clip, transform, resolution, renderingHints);
+ sc.renderShape(this, s, clip, transform, resolution, yRes, renderingHints);
+ freeScanlineConverter(sc);
}
/**
*/
protected void rawDrawLine(int x0, int y0, int x1, int y1)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.line == null)
sc.line = new Line2D.Float();
sc.line.setLine(x0, y0, x1, y1);
protected void rawDrawRect(int x, int y, int w, int h)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.rect == null)
sc.rect = new Rectangle();
sc.rect.setBounds(x, y, w, h);
draw(sc.rect);
}
- /**
- * Draws a string in optimization mode. The implementation should respect the
- * clip and translation. It can assume that the clip is a rectangle and that
- * the transform is only a translating transform.
- *
- * @param text the string to be drawn
- * @param x the start of the baseline, X coordinate
- * @param y the start of the baseline, Y coordinate
- */
- protected void rawDrawString(String text, int x, int y)
- {
- FontRenderContext ctx = getFontRenderContext();
- GlyphVector gv = font.createGlyphVector(ctx, text.toCharArray());
- drawGlyphVector(gv, x, y);
- }
-
/**
* Clears a rectangle in optimization mode. The implementation should respect the
* clip and translation. It can assume that the clip is a rectangle and that
*/
protected void rawFillRect(int x, int y, int w, int h)
{
- ShapeCache sc = getShapeCache();
+ ShapeCache sc = shapeCache;
if (sc.rect == null)
sc.rect = new Rectangle();
sc.rect.setBounds(x, y, w, h);
}
/**
- * Returns the ShapeCache for the calling thread.
+ * Returns a free scanline converter from the pool.
*
- * @return the ShapeCache for the calling thread
+ * @return a scanline converter
*/
- private ShapeCache getShapeCache()
+ private ScanlineConverter getScanlineConverter()
{
- ShapeCache sc = shapeCache.get();
- if (sc == null)
+ synchronized (scanlineConverters)
{
- sc = new ShapeCache();
- shapeCache.set(sc);
+ ScanlineConverter sc;
+ if (scanlineConverters.size() > 0)
+ {
+ sc = scanlineConverters.removeFirst();
+ }
+ else
+ {
+ sc = new ScanlineConverter();
+ }
+ return sc;
}
- return sc;
}
/**
- * Returns the scanline converter for this thread.
+ * Puts a scanline converter back in the pool.
*
- * @return the scanline converter for this thread
+ * @param sc
*/
- private ScanlineConverter getScanlineConverter()
+ private void freeScanlineConverter(ScanlineConverter sc)
{
- ScanlineConverter sc = scanlineConverters.get();
- if (sc == null)
+ synchronized (scanlineConverters)
{
- sc = new ScanlineConverter();
- scanlineConverters.set(sc);
+ scanlineConverters.addLast(sc);
}
- return sc;
}
}
--- /dev/null
+package gnu.java.awt.java2d;
+
+/**
+ * Stores and handles the pixel converage for a scanline. The pixel coverage
+ * is stored as sorted list of buckets, each of which holds information about
+ * the coverage for the X and Y axis. This is utilized to compute the actual
+ * coverage for each pixel on the scanline and finding chunks of pixels with
+ * equal coverage.
+ */
+final class PixelCoverage
+{
+
+ /**
+ * One bucket in the list.
+ */
+ private static final class Bucket
+ {
+ /**
+ * The X coordinate on the scanline to which this bucket belongs.
+ */
+ int xPos;
+
+ /**
+ * The X coverage.
+ */
+ int xCov;
+
+ /**
+ * The Y coverage.
+ */
+ int yCov;
+
+ /**
+ * Implements a linked list. This points to the next element of the list.
+ */
+ Bucket next;
+
+ /**
+ * Implements a linked list. This points to the previous element of the
+ * list.
+ */
+ Bucket prev;
+ }
+
+ /**
+ * The head of the sorted list of buckets.
+ */
+ private Bucket head;
+
+ /**
+ * The current bucket. We make use of the fact that the scanline converter
+ * always scans the scanline (and thus this list) from left to right to
+ * quickly find buckets or insertion points.
+ */
+ private Bucket current;
+
+ /**
+ * The bucket after the last valid bucket. Unused buckets are not thrown
+ * away and garbage collected. Instead, we keep them at the tail of the list
+ * and reuse them when necessary.
+ */
+ private Bucket last;
+
+ /**
+ * Indicates the the next scan of the scanline begins and that the next
+ * request will be at the beginning of this list. This makes searching and
+ * sorting of this list very quick.
+ */
+ void rewind()
+ {
+ current = head;
+ }
+
+ /**
+ * Clears the list. This does not throw away the old buckets but only
+ * resets the end-pointer of the list to the first element. All buckets are
+ * then unused and are reused when the list is filled again.
+ */
+ void clear()
+ {
+ last = head;
+ }
+
+ /**
+ * This adds the specified x and y coverage to the pixel at the specified
+ * X position.
+ *
+ * @param x the X position
+ * @param xc the x coverage
+ * @param yc the y coverage
+ */
+ void add(int x, int xc, int yc)
+ {
+ Bucket bucket = findOrInsert(x);
+ bucket.xCov += xc;
+ bucket.yCov += yc;
+ }
+
+ /**
+ * Finds the bucket in the list with the specified X coordinate.
+ * If no such bucket is found, then a new one is fetched (either a cached
+ * bucket from the end of the list or a newly allocated one) inserted at the
+ * correct position and returned.
+ *
+ * @param x the X coordinate
+ *
+ * @return a bucket to hold the coverage data
+ */
+ private Bucket findOrInsert(int x)
+ {
+ // First search for a matching bucket.
+ if (head == null)
+ {
+ // Special case: the list is still empty.
+ head = new Bucket();
+ current = head;
+ return head;
+ }
+
+ // This performs a linear search, starting from the current bucket.
+ // This is reasonably efficient because access to this list is always done
+ // in a linear fashion and we are not more then 1 or 2 buckets away from
+ // the one we're looking for.
+ Bucket match = current;
+ while (match != null && match.xPos != x)
+ {
+
+ }
+
+ return match;
+ }
+}
*/
private static int ONE = Fixed.fixedValue(FIXED_DIGITS, 1);
- /**
- * The number of significant bits for the Y resolution.
- */
- private static int Y_RESOLUTION = 4;
-
/**
* The actual number of scanlines.
*/
*/
private int resolution;
+ /**
+ * The number of significant bits for the 'Y' resolution.
+ */
+ private int yResolution;
+
/**
* One half step according to the resolution. This is stored to avoid
* unnecessary operations during rendering.
* @param trans the transform
*/
public void renderShape(Pixelizer p, Shape shape, Shape clip,
- AffineTransform trans, int res, RenderingHints hints)
+ AffineTransform trans, int res, int yRes,
+ RenderingHints hints)
{
// TODO: Do something useful with the rendering hints. Like, adjusting
// the resolution.
// Prepare resolution and upper bounds.
clear();
- setResolution(res);
+ setResolution(res, yRes);
boolean haveClip = clip != null;
int frac0 = ONE - Fixed.trunc(FIXED_DIGITS, x0);
int frac1 = ONE - Fixed.trunc(FIXED_DIGITS, x1);
// Only keep the first 4 digits after the point.
- frac0 = frac0 >> (FIXED_DIGITS - Y_RESOLUTION);
- frac1 = frac1 >> (FIXED_DIGITS - Y_RESOLUTION);
- scanlineCoverage.add(pix0, 1 * (1 << Y_RESOLUTION), frac0);
- scanlineCoverage.add(pix1, -1 * (1 << Y_RESOLUTION), -frac1);
+ frac0 = frac0 >> (FIXED_DIGITS - yResolution);
+ frac1 = frac1 >> (FIXED_DIGITS - yResolution);
+ scanlineCoverage.add(pix0, 1 * (1 << yResolution), frac0);
+ scanlineCoverage.add(pix1, -1 * (1 << yResolution), -frac1);
}
if (edge.isClip)
inClip = ! inClip;
*
* @param res the resolution
*/
- private void setResolution(int res)
+ private void setResolution(int res, int yRes)
{
int scanlinesPerPixel = 1 << res;
int one = Fixed.fixedValue(FIXED_DIGITS, 1);
resolution = one / (scanlinesPerPixel);
halfStep = resolution / 2;
- scanlineCoverage.setMaxCoverage(scanlinesPerPixel << Y_RESOLUTION);
+ scanlineCoverage.setMaxCoverage(scanlinesPerPixel << yResolution);
+
+ yResolution = yRes;
}
/**
* A data object that carries information about pixel coverage on a scanline.
* The data consists of a starting X position on the scanline, the
* length of the range in pixels and the actual coverage value.
-´ */
+ **/
public static final class Range
{
/**
--- /dev/null
+/* ShapeWrapper.java -- Protects shapes by wrapping them
+ Copyright (C) 2007 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 gnu.java.awt.java2d;
+
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Protects any other shape from beeing modified by wrapping it.
+ */
+public class ShapeWrapper
+ implements Shape
+{
+
+ /**
+ * The shape to be protected.
+ */
+ private Shape shape;
+
+ /**
+ * Creates a new ShapeWrapper.
+ *
+ * @param other the shape to be protected
+ */
+ public ShapeWrapper(Shape other)
+ {
+ shape = other;
+ }
+
+ public boolean contains(double x, double y)
+ {
+ return shape.contains(x, y);
+ }
+
+ public boolean contains(Point2D p)
+ {
+ return shape.contains(p);
+ }
+
+ public boolean contains(double x, double y, double w, double h)
+ {
+ return shape.contains(x, y, w, h);
+ }
+
+ public boolean contains(Rectangle2D r)
+ {
+ return shape.contains(r);
+ }
+
+ public Rectangle getBounds()
+ {
+ return shape.getBounds();
+ }
+
+ public Rectangle2D getBounds2D()
+ {
+ return shape.getBounds2D();
+ }
+
+ public PathIterator getPathIterator(AffineTransform transform)
+ {
+ return shape.getPathIterator(transform);
+ }
+
+ public PathIterator getPathIterator(AffineTransform transform, double flatness)
+ {
+ return shape.getPathIterator(transform, flatness);
+ }
+
+ public boolean intersects(double x, double y, double w, double h)
+ {
+ return shape.intersects(x, y, w, h);
+ }
+
+ public boolean intersects(Rectangle2D r)
+ {
+ return shape.intersects(r);
+ }
+
+}
--- /dev/null
+/* TextCacheKey.java -- Key to use for caching texts with their rendered layout
+ Copyright (C) 2007 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 gnu.java.awt.java2d;
+
+import java.awt.Font;
+import java.awt.font.FontRenderContext;
+
+/**
+ * A key object to be used when caching pre-rendered text.
+ */
+public class TextCacheKey
+{
+
+ /**
+ * The actual string.
+ */
+ private String string;
+
+ /**
+ * The font render context.
+ */
+ private FontRenderContext fontRenderContext;
+
+ /**
+ * The font.
+ */
+ private Font font;
+
+ /**
+ * Creates a new TextCacheKey.
+ *
+ * This is intended to be used as search key. It is important to initialize
+ * the values using the setter methods before using this key, otherwise
+ * it will throw NPEs.
+ */
+ public TextCacheKey()
+ {
+ // No-arg constructor.
+ }
+
+ /**
+ * Creates a new TextCacheKey with initial values.
+ *
+ * @param s the string
+ * @param f the font
+ * @param frc the font render context
+ */
+ public TextCacheKey(String s, Font f, FontRenderContext frc)
+ {
+ string = s;
+ font = f;
+ fontRenderContext = frc;
+ }
+
+ /**
+ * Re-sets the string. This is intented to be used in search keys only.
+ *
+ * @param s the string to set
+ */
+ public void setString(String s)
+ {
+ string = s;
+ }
+
+ /**
+ * Sets the font render context.
+ * This is intented to be used in search keys only.
+ *
+ * @param frc the new font render context
+ */
+ public void setFontRenderContext(FontRenderContext frc)
+ {
+ fontRenderContext = frc;
+ }
+
+ /**
+ * Sets the font.
+ * This is intented to be used in search keys only.
+ *
+ * @param f the font to set
+ */
+ public void setFont(Font f)
+ {
+ font = f;
+ }
+
+ /**
+ * Determines if two objects are equal.
+ *
+ * @see Object#equals(Object)
+ */
+ public boolean equals(Object o)
+ {
+ boolean eq;
+ if (o instanceof TextCacheKey)
+ {
+ TextCacheKey other = (TextCacheKey) o;
+ eq = other.string.equals(string)
+ && other.font.equals(font)
+ && other.fontRenderContext.equals(fontRenderContext);
+ }
+ else
+ {
+ eq = false;
+ }
+ return eq;
+ }
+
+ /**
+ * Computes a hashcode for this key.
+ *
+ * @see Object#hashCode()
+ */
+ public int hashCode()
+ {
+ return string.hashCode() ^ font.hashCode() ^ fontRenderContext.hashCode();
+ }
+}
package gnu.java.awt.peer;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.net.URI;
/**
* @author Mario Torre <neugens@limasoftware.net>
package gnu.java.awt.peer.gtk;
+import gnu.classpath.Configuration;
+
import gnu.java.awt.ClasspathToolkit;
import java.awt.AWTPermission;
{
static
{
- System.loadLibrary("gtkpeer");
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("gtkpeer");
+ }
}
/**
/**
* Sets up the default values and allocates the native cairographics2d structure
- * @param cairo_t_pointer, a native pointer to a cairo_t of the context.
+ * @param cairo_t_pointer a native pointer to a cairo_t of the context.
*/
public void setup(long cairo_t_pointer)
{
/**
* Draw pixels as an RGBA int matrix
- * @param w, h - width and height
+ * @param w - width
+ * @param h - height
* @param stride - stride of the array width
* @param i2u - affine transform array
*/
private static Rectangle computeIntersection(int x, int y, int w, int h,
Rectangle rect)
{
- int x2 = (int) rect.x;
- int y2 = (int) rect.y;
- int w2 = (int) rect.width;
- int h2 = (int) rect.height;
+ int x2 = rect.x;
+ int y2 = rect.y;
+ int w2 = rect.width;
+ int h2 = rect.height;
int dx = (x > x2) ? x : x2;
int dy = (y > y2) ? y : y2;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
-import java.awt.Shape;
import java.awt.color.ColorSpace;
-import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DataBuffer;
0x000000FF);
/**
* Allocates and clears the buffer and creates the cairo surface.
- * @param width, height - the image size
+ * @param width - the image size
+ * @param height - the image size
* @param stride - the buffer row stride. (in ints)
*/
private native void create(int width, int height, int stride, int[] buf);
/**
* Creates a cairo_t for a volatile image
*/
- protected native long initFromVolatile( long pixmapPtr, int width, int height);
+ protected native long initFromVolatile( long pixmapPtr);
/**
* Grab lock
unlock();
}
}
-}
\ No newline at end of file
+}
package gnu.java.awt.peer.gtk;
+import gnu.classpath.Configuration;
import gnu.classpath.Pointer;
import gnu.java.awt.ClasspathToolkit;
static
{
- System.loadLibrary("gtkpeer");
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("gtkpeer");
+ }
initStaticState ();
package gnu.java.awt.peer.gtk;
+import gnu.classpath.Configuration;
import gnu.java.awt.ClasspathGraphicsEnvironment;
import java.awt.Font;
static
{
- System.loadLibrary("gtkpeer");
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("gtkpeer");
+ }
GtkToolkit.initializeGlobalIDs();
initIDs();
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream;
+import gnu.classpath.Configuration;
import gnu.classpath.Pointer;
public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
{
static
{
- System.loadLibrary("gtkpeer");
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("gtkpeer");
+ }
initStaticState ();
}
import java.awt.Window;
import java.util.ArrayList;
+import gnu.classpath.Configuration;
import gnu.classpath.Pointer;
class GdkScreenGraphicsDevice extends GraphicsDevice
static
{
- System.loadLibrary("gtkpeer");
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("gtkpeer");
+ }
+
GtkToolkit.initializeGlobalIDs();
initIDs();
}
native void gtkWidgetGetDimensions (int[] dim);
native void gtkWidgetGetPreferredDimensions (int[] dim);
native void gtkWindowGetLocationOnScreen (int[] point);
+ native void gtkWindowGetLocationOnScreenUnlocked (int[] point);
native void gtkWidgetGetLocationOnScreen (int[] point);
+ native void gtkWidgetGetLocationOnScreenUnlocked (int[] point);
native void gtkWidgetSetCursor (int type, GtkImage image, int x, int y);
native void gtkWidgetSetCursorUnlocked (int type, GtkImage image,
int x, int y);
public Point getLocationOnScreen ()
{
int point[] = new int[2];
- gtkWidgetGetLocationOnScreen (point);
+ if (Thread.currentThread() == GtkMainThread.mainThread)
+ gtkWidgetGetLocationOnScreenUnlocked (point);
+ else
+ gtkWidgetGetLocationOnScreen (point);
return new Point (point[0], point[1]);
}
{
// We're adding a menubar where there was no menubar before.
gtkFixedSetVisible (false);
- menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer();
+ menuBar = (MenuBarPeer) bar.getPeer();
setMenuBarPeer (menuBar);
int menuBarWidth =
awtComponent.getWidth () - insets.left - insets.right;
int oldHeight = menuBarHeight;
int menuBarWidth =
awtComponent.getWidth () - insets.left - insets.right;
- menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer ();
+ menuBar = (MenuBarPeer) bar.getPeer ();
setMenuBarPeer (menuBar);
if (menuBarWidth > 0)
setMenuBarWidth (menuBar, menuBarWidth);
}
}
GtkGenericPeer.q()
- .postEvent(new NativeEventLoopRunningEvent(new Boolean(true)));
+ .postEvent(new NativeEventLoopRunningEvent(Boolean.TRUE));
}
}
}
}
}
GtkGenericPeer.q()
- .postEvent(new NativeEventLoopRunningEvent(new Boolean(false)));
+ .postEvent(new NativeEventLoopRunningEvent(Boolean.FALSE));
}
}
}
package gnu.java.awt.peer.gtk;
+import gnu.classpath.Configuration;
+
import gnu.java.awt.AWTUtilities;
import gnu.java.awt.EmbeddedWindow;
import gnu.java.awt.dnd.GtkMouseDragGestureRecognizer;
static
{
- System.loadLibrary("gtkpeer");
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("gtkpeer");
+ }
/**
* Gotta do that first.
public Point getLocationOnScreen()
{
int point[] = new int[2];
- gtkWindowGetLocationOnScreen(point);
+ if (Thread.currentThread() == GtkMainThread.mainThread)
+ gtkWindowGetLocationOnScreenUnlocked(point);
+ else
+ gtkWindowGetLocationOnScreen(point);
return new Point(point[0], point[1]);
}
public VolatileImageGraphics(GtkVolatileImage img)
{
this.owner = img;
- cairo_t = initFromVolatile( owner.nativePointer, img.width, img.height );
+ cairo_t = initFromVolatile( owner.nativePointer );
setup( cairo_t );
}
private VolatileImageGraphics(VolatileImageGraphics copy)
{
this.owner = copy.owner;
- cairo_t = initFromVolatile(owner.nativePointer, owner.width, owner.height);
+ cairo_t = initFromVolatile(owner.nativePointer);
copy( copy, cairo_t );
}
Menu o = (Menu)owner;
for( int i=0; i < o.getItemCount(); i++ )
{
- MenuItem ci = (MenuItem)o.getItem(i);
+ MenuItem ci = o.getItem(i);
if (ci instanceof Menu && ci.getPeer() != null)
((QtMenuPeer)ci.getPeer()).addItems();
addItem( ci );
package gnu.java.awt.peer.swing;
-import java.awt.Button;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
-import java.awt.Label;
import java.awt.Point;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
-import javax.swing.JLabel;
import javax.swing.JToggleButton;
/**
/**
* Adds a help menu to the menu bar.
*
- * @param m the menu to add
+ * @param menu the menu to add
*/
public void addHelpMenu(Menu menu)
{
package gnu.java.awt.peer.swing;
-import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
exception statement from your version. */
package gnu.java.awt.peer.swing;
-import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
* @param startPos the start index of the selection
* @param endPos the start index of the selection
*/
- public void select(int start_pos, int endPos)
+ public void select(int startPos, int endPos)
{
// TODO: Must be implemented.
}
+++ /dev/null
-/* ImageConverter.java -- Convert arbitrary Image impl to XImage
- 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. */
-
-package gnu.java.awt.peer.x;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.image.ColorModel;
-import java.awt.image.ImageConsumer;
-import java.util.Hashtable;
-
-/**
- * Convert a non-XImage to an XImage.
- *
- * @author Roman Kennke (kennke@aicas.com)
- */
-public class ImageConverter implements ImageConsumer
-{
-
- private XImage image;
- private Graphics imageGraphics;
-
- public void setDimensions(int width, int height)
- {
- image = new XImage(width, height);
- }
-
- public void setProperties(Hashtable props)
- {
- // Ignore for now.
- }
-
- public void setColorModel(ColorModel model)
- {
- // Ignore for now.
- }
-
- public void setHints(int flags)
- {
- // Ignore for now.
- }
-
- public void setPixels(int x, int y, int w, int h, ColorModel model,
- byte[] pixels, int offset, int scansize)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public void setPixels(int x, int y, int w, int h, ColorModel model,
- int[] pixels, int offset, int scansize)
- {
- System.err.println("transferType: " + model.getTransferType());
- System.err.println("colorModel: " + model);
- if (imageGraphics == null)
- imageGraphics = image.getGraphics();
- int xend = x + w;
- int yend = y + h;
- for (int yy = y; yy < yend; yy++)
- {
- for (int xx = x; xx < xend; xx++)
- {
- int pixel = pixels[yy * scansize + xx + offset];
- imageGraphics.setColor(new Color(model.getRGB(pixel)));
- imageGraphics.fillRect(xx, yy, 1, 1);
- }
- }
- }
-
- public void imageComplete(int status)
- {
- // Nothing to do here.
- }
-
- XImage getXImage()
- {
- return image;
- }
-}
package gnu.java.awt.peer.x;
import java.awt.Graphics;
+import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Window;
System.err.println("resize request for window id: " + key);
// Detect and report size changes.
- if (c.width() != awtWindow.getWidth()
- || c.height() != awtWindow.getHeight())
+ XWindowPeer xwindow = (XWindowPeer) awtWindow.getPeer();
+ Insets i = xwindow.insets();
+ if (c.width() != awtWindow.getWidth() - i.left - i.right
+ || c.height() != awtWindow.getHeight() - i.top - i.bottom)
{
if (XToolkit.DEBUG)
System.err.println("Setting size on AWT window: " + c.width()
+ ", " + c.height() + ", " + awtWindow.getWidth()
+ ", " + awtWindow.getHeight());
- ((XWindowPeer) awtWindow.getPeer()).callback = true;
- awtWindow.setSize(c.width(), c.height());
- ((XWindowPeer) awtWindow.getPeer()).callback = false;
+ xwindow.callback = true;
+ xwindow.xwindow.width = c.width();
+ xwindow.xwindow.height = c.height();
+ awtWindow.setSize(c.width() + i.left + i.right,
+ c.height() + i.top + i.bottom);
+ xwindow.callback = false;
}
break;
case Expose.CODE:
exp.height());
//System.err.println("expose paint: " + r);
// We need to clear the background of the exposed rectangle.
+ assert awtWindow != null : "awtWindow == null for window ID: " + key;
Graphics g = awtWindow.getGraphics();
g.clearRect(r.x, r.y, r.width, r.height);
g.dispose();
--- /dev/null
+/* XFontPeer.java -- The font peer for X
+ 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. */
+
+
+package gnu.java.awt.peer.x;
+
+import java.awt.AWTError;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.font.LineMetrics;
+import java.awt.font.TextAttribute;
+import java.awt.geom.Rectangle2D;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.CharacterIterator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+
+import gnu.java.awt.peer.ClasspathFontPeer;
+import gnu.x11.Display;
+import gnu.x11.Fontable;
+
+/**
+ * The bridge from AWT to X fonts.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class XFontPeer
+ extends ClasspathFontPeer
+{
+
+ /**
+ * The font mapping as specified in the file fonts.properties.
+ */
+ private static Properties fontProperties;
+ static
+ {
+ fontProperties = new Properties();
+ InputStream in = XFontPeer.class.getResourceAsStream("xfonts.properties");
+ try
+ {
+ fontProperties.load(in);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * The FontMetrics implementation for XFontPeer.
+ */
+ private class XFontMetrics
+ extends FontMetrics
+ {
+ /**
+ * The ascent of the font.
+ */
+ int ascent;
+
+ /**
+ * The descent of the font.
+ */
+ int descent;
+
+ /**
+ * The maximum of the character advances.
+ */
+ private int maxAdvance;
+
+ /**
+ * The internal leading.
+ */
+ int leading;
+
+ /**
+ * Cached string metrics. This caches string metrics locally so that the
+ * server doesn't have to be asked each time.
+ */
+ private HashMap metricsCache;
+
+ /**
+ * The widths of the characters indexed by the characters themselves.
+ */
+ private int[] charWidths;
+
+ /**
+ * Creates a new XFontMetrics for the specified font.
+ *
+ * @param font the font
+ */
+ protected XFontMetrics(Font font)
+ {
+ super(font);
+ metricsCache = new HashMap();
+ Fontable.FontInfo info = getXFont().info();
+ ascent = info.font_ascent();
+ descent = info.font_descent();
+ maxAdvance = info.max_bounds().character_width();
+ leading = 0; // TODO: Not provided by X. Possible not needed.
+
+ if (info.min_byte1() == 0 && info.max_byte1() == 0)
+ readCharWidthsLinear(info);
+ else
+ readCharWidthsNonLinear(info);
+ }
+
+ /**
+ * Reads the character widths when specified in a linear fashion. That is
+ * when the min-byte1 and max-byte2 fields are both zero in the X protocol.
+ *
+ * @param info the font info reply
+ */
+ private void readCharWidthsLinear(Fontable.FontInfo info)
+ {
+ int startIndex = info.min_char_or_byte2();
+ int endIndex = info.max_char_or_byte2();
+ charWidths = new int[endIndex + 1];
+ // All the characters before startIndex are zero width.
+ for (int i = 0; i < startIndex; i++)
+ {
+ charWidths[i] = 0;
+ }
+ // All the other character info is fetched from the font info.
+ int index = startIndex;
+ Fontable.FontInfo.CharInfo[] charInfos = info.char_infos();
+ for (Fontable.FontInfo.CharInfo charInfo : charInfos)
+ {
+ charWidths[index] = charInfo.character_width();
+ index++;
+ }
+ }
+
+ private void readCharWidthsNonLinear(Fontable.FontInfo info)
+ {
+ // TODO: Implement.
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ /**
+ * Returns the ascent of the font.
+ *
+ * @return the ascent of the font
+ */
+ public int getAscent()
+ {
+ return ascent;
+ }
+
+ /**
+ * Returns the descent of the font.
+ *
+ * @return the descent of the font
+ */
+ public int getDescent()
+ {
+ return descent;
+ }
+
+ /**
+ * Returns the overall height of the font. This is the distance from
+ * baseline to baseline (usually ascent + descent + leading).
+ *
+ * @return the overall height of the font
+ */
+ public int getHeight()
+ {
+ return ascent + descent;
+ }
+
+ /**
+ * Returns the leading of the font.
+ *
+ * @return the leading of the font
+ */
+ public int getLeading()
+ {
+ return leading;
+ }
+
+ /**
+ * Returns the maximum advance for this font.
+ *
+ * @return the maximum advance for this font
+ */
+ public int getMaxAdvance()
+ {
+ return maxAdvance;
+ }
+
+ /**
+ * Determines the width of the specified character <code>c</code>.
+ *
+ * @param c the character
+ *
+ * @return the width of the character
+ */
+ public int charWidth(char c)
+ {
+ int width;
+ if (c > charWidths.length)
+ width = charWidths['?'];
+ else
+ width = charWidths[c];
+ return width;
+ }
+
+ /**
+ * Determines the overall width of the specified string.
+ *
+ * @param c the char buffer holding the string
+ * @param offset the starting offset of the string in the buffer
+ * @param length the number of characters in the string buffer
+ *
+ * @return the overall width of the specified string
+ */
+ public int charsWidth(char[] c, int offset, int length)
+ {
+ int width = 0;
+ if (c.length > 0 && length > 0)
+ {
+ String s = new String(c, offset, length);
+ width = stringWidth(s);
+ }
+ return width;
+ }
+
+ /**
+ * Determines the overall width of the specified string.
+ *
+ * @param s the string
+ *
+ * @return the overall width of the specified string
+ */
+ public int stringWidth(String s)
+ {
+ int width = 0;
+ if (s.length() > 0)
+ {
+ if (metricsCache.containsKey(s))
+ {
+ width = ((Integer) metricsCache.get(s)).intValue();
+ }
+ else
+ {
+ Fontable.TextExtentInfo extents = getXFont().text_extent(s);
+ /*
+ System.err.println("string: '" + s + "' : ");
+ System.err.println("ascent: " + extents.getAscent());
+ System.err.println("descent: " + extents.getDescent());
+ System.err.println("overall ascent: " + extents.getOverallAscent());
+ System.err.println("overall descent: " + extents.getOverallDescent());
+ System.err.println("overall width: " + extents.getOverallWidth());
+ System.err.println("overall left: " + extents.getOverallLeft());
+ System.err.println("overall right: " + extents.getOverallRight());
+ */
+ width = extents.overall_width(); // + extents.overall_left();
+ //System.err.println("String: " + s + ", width: " + width);
+ metricsCache.put(s, new Integer(width));
+ }
+ }
+ //System.err.print("stringWidth: '" + s + "': ");
+ //System.err.println(width);
+ return width;
+ }
+ }
+
+ /**
+ * The LineMetrics implementation for the XFontPeer.
+ */
+ private class XLineMetrics
+ extends LineMetrics
+ {
+
+ /**
+ * Returns the ascent of the font.
+ *
+ * @return the ascent of the font
+ */
+ public float getAscent()
+ {
+ return fontMetrics.ascent;
+ }
+
+ public int getBaselineIndex()
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException();
+ }
+
+ public float[] getBaselineOffsets()
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Returns the descent of the font.
+ *
+ * @return the descent of the font
+ */
+ public float getDescent()
+ {
+ return fontMetrics.descent;
+ }
+
+ /**
+ * Returns the overall height of the font. This is the distance from
+ * baseline to baseline (usually ascent + descent + leading).
+ *
+ * @return the overall height of the font
+ */
+ public float getHeight()
+ {
+ return fontMetrics.ascent + fontMetrics.descent;
+ }
+
+ /**
+ * Returns the leading of the font.
+ *
+ * @return the leading of the font
+ */
+ public float getLeading()
+ {
+ return fontMetrics.leading;
+ }
+
+ public int getNumChars()
+ {
+ // FIXME: Implement this.
+ throw new UnsupportedOperationException();
+ }
+
+ public float getStrikethroughOffset()
+ {
+ return 0.F; // TODO: Provided by X??
+ }
+
+ public float getStrikethroughThickness()
+ {
+ return 1.F; // TODO: Provided by X??
+ }
+
+ public float getUnderlineOffset()
+ {
+ return 0.F; // TODO: Provided by X??
+ }
+
+ public float getUnderlineThickness()
+ {
+ return 1.F; // TODO: Provided by X??
+ }
+
+ }
+
+ /**
+ * The X font.
+ */
+ private gnu.x11.Font xfont;
+
+ private String name;
+
+ private int style;
+
+ private int size;
+
+ /**
+ * The font metrics for this font.
+ */
+ XFontMetrics fontMetrics;
+
+ /**
+ * Creates a new XFontPeer for the specified font name, style and size.
+ *
+ * @param name the font name
+ * @param style the font style (bold / italic / normal)
+ * @param size the size of the font
+ */
+ public XFontPeer(String name, int style, int size)
+ {
+ super(name, style, size);
+ this.name = name;
+ this.style = style;
+ this.size = size;
+ }
+
+ /**
+ * Creates a new XFontPeer for the specified font name and style
+ * attributes.
+ *
+ * @param name the font name
+ * @param atts the font attributes
+ */
+ public XFontPeer(String name, Map atts)
+ {
+ super(name, atts);
+ String family = name;
+ if (family == null || family.equals(""))
+ family = (String) atts.get(TextAttribute.FAMILY);
+ if (family == null)
+ family = "SansSerif";
+
+ int size = 12;
+ Float sizeFl = (Float) atts.get(TextAttribute.SIZE);
+ if (sizeFl != null)
+ size = sizeFl.intValue();
+
+ int style = 0;
+ // Detect italic attribute.
+ Float posture = (Float) atts.get(TextAttribute.POSTURE);
+ if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
+ style |= Font.ITALIC;
+
+ // Detect bold attribute.
+ Float weight = (Float) atts.get(TextAttribute.WEIGHT);
+ if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
+ style |= Font.BOLD;
+
+ this.name = name;
+ this.style = style;
+ this.size = size;
+ }
+
+ /**
+ * Initializes the font peer with the specified attributes. This method is
+ * called from both constructors.
+ *
+ * @param name the font name
+ * @param style the font style
+ * @param size the font size
+ */
+ private void init(String name, int style, int size)
+ {
+ if (name == null)
+ {
+ name = "SansSerif";
+ }
+ GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice dev = env.getDefaultScreenDevice();
+ if (dev instanceof XGraphicsDevice)
+ {
+ Display display = ((XGraphicsDevice) dev).getDisplay();
+ String fontDescr = encodeFont(name, style, size);
+ if (XToolkit.DEBUG)
+ System.err.println("XLFD font description: " + fontDescr);
+ xfont = new gnu.x11.Font(display, fontDescr);
+ }
+ else
+ {
+ throw new AWTError("Local GraphicsEnvironment is not XWindowGraphicsEnvironment");
+ }
+ }
+
+ public boolean canDisplay(Font font, int c)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public int canDisplayUpTo(Font font, CharacterIterator i, int start, int limit)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public String getSubFamilyName(Font font, Locale locale)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public String getPostScriptName(Font font)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public int getNumGlyphs(Font font)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public int getMissingGlyphCode(Font font)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public byte getBaselineFor(Font font, char c)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public String getGlyphName(Font font, int glyphIndex)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public GlyphVector createGlyphVector(Font font, FontRenderContext frc,
+ CharacterIterator ci)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public GlyphVector createGlyphVector(Font font, FontRenderContext ctx,
+ int[] glyphCodes)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public GlyphVector layoutGlyphVector(Font font, FontRenderContext frc,
+ char[] chars, int start, int limit,
+ int flags)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ /**
+ * Returns the font metrics for the specified font.
+ *
+ * @param font the font for which to fetch the font metrics
+ *
+ * @return the font metrics for the specified font
+ */
+ public FontMetrics getFontMetrics(Font font)
+ {
+ if (font.getPeer() != this)
+ throw new AWTError("The specified font has a different peer than this");
+
+ if (fontMetrics == null)
+ fontMetrics = new XFontMetrics(font);
+ return fontMetrics;
+ }
+
+ /**
+ * Frees the font in the X server.
+ */
+ protected void finalize()
+ {
+ if (xfont != null)
+ xfont.close();
+ }
+
+ public boolean hasUniformLineMetrics(Font font)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ /**
+ * Returns the line metrics for this font and the specified string and
+ * font render context.
+ */
+ public LineMetrics getLineMetrics(Font font, CharacterIterator ci, int begin,
+ int limit, FontRenderContext rc)
+ {
+ return new XLineMetrics();
+ }
+
+ public Rectangle2D getMaxCharBounds(Font font, FontRenderContext rc)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ public Rectangle2D getStringBounds(Font font, CharacterIterator ci,
+ int begin, int limit, FontRenderContext frc)
+ {
+ // TODO: Implement this.
+ throw new UnsupportedOperationException("Not yet implemented.");
+ }
+
+ /**
+ * Encodes a font name + style + size specification into a X logical font
+ * description (XLFD) as described here:
+ *
+ * http://www.meretrx.com/e93/docs/xlfd.html
+ *
+ * This is implemented to look up the font description in the
+ * fonts.properties of this package.
+ *
+ * @param name the font name
+ * @param atts the text attributes
+ *
+ * @return the encoded font description
+ */
+ static String encodeFont(String name, Map atts)
+ {
+ String family = name;
+ if (family == null || family.equals(""))
+ family = (String) atts.get(TextAttribute.FAMILY);
+ if (family == null)
+ family = "SansSerif";
+
+ int size = 12;
+ Float sizeFl = (Float) atts.get(TextAttribute.SIZE);
+ if (sizeFl != null)
+ size = sizeFl.intValue();
+
+ int style = 0;
+ // Detect italic attribute.
+ Float posture = (Float) atts.get(TextAttribute.POSTURE);
+ if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
+ style |= Font.ITALIC;
+
+ // Detect bold attribute.
+ Float weight = (Float) atts.get(TextAttribute.WEIGHT);
+ if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
+ style |= Font.BOLD;
+
+ return encodeFont(family, style, size);
+ }
+
+ /**
+ * Encodes a font name + style + size specification into a X logical font
+ * description (XLFD) as described here:
+ *
+ * http://www.meretrx.com/e93/docs/xlfd.html
+ *
+ * This is implemented to look up the font description in the
+ * fonts.properties of this package.
+ *
+ * @param name the font name
+ * @param style the font style
+ * @param size the font size
+ *
+ * @return the encoded font description
+ */
+ static String encodeFont(String name, int style, int size)
+ {
+ StringBuilder key = new StringBuilder();
+ key.append(validName(name));
+ key.append('.');
+ switch (style)
+ {
+ case Font.BOLD:
+ key.append("bold");
+ break;
+ case Font.ITALIC:
+ key.append("italic");
+ break;
+ case (Font.BOLD | Font.ITALIC):
+ key.append("bolditalic");
+ break;
+ case Font.PLAIN:
+ default:
+ key.append("plain");
+
+ }
+
+ String protoType = fontProperties.getProperty(key.toString());
+ int s = validSize(size);
+ return protoType.replaceFirst("%d", String.valueOf(s));
+ }
+
+ /**
+ * Checks the specified font name for a valid font name. If the font name
+ * is not known, then this returns 'sansserif' as fallback.
+ *
+ * @param name the font name to check
+ *
+ * @return a valid font name
+ */
+ static String validName(String name)
+ {
+ String retVal;
+ if (name.equalsIgnoreCase("sansserif")
+ || name.equalsIgnoreCase("serif")
+ || name.equalsIgnoreCase("monospaced")
+ || name.equalsIgnoreCase("dialog")
+ || name.equalsIgnoreCase("dialoginput"))
+ {
+ retVal = name.toLowerCase();
+ }
+ else
+ {
+ retVal = "sansserif";
+ }
+ return retVal;
+ }
+
+ /**
+ * Translates an arbitrary point size to a size that is typically available
+ * on an X server. These are the sizes 8, 10, 12, 14, 18 and 24.
+ *
+ * @param size the queried size
+ * @return the real available size
+ */
+ private static final int validSize(int size)
+ {
+ int val;
+ if (size <= 9)
+ val = 8;
+ else if (size <= 11)
+ val = 10;
+ else if (size <= 13)
+ val = 12;
+ else if (size <= 17)
+ val = 14;
+ else if (size <= 23)
+ val = 18;
+ else
+ val = 24;
+ return val;
+ }
+
+ /**
+ * Returns the X Font reference. This lazily loads the font when first
+ * requested.
+ *
+ * @return the X Font reference
+ */
+ gnu.x11.Font getXFont()
+ {
+ if (xfont == null)
+ {
+ init(name, style, size);
+ }
+ return xfont;
+ }
+}
+++ /dev/null
-/* XFontPeer2.java -- A Java based TTF font peer for X
- 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. */
-
-package gnu.java.awt.peer.x;
-
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.font.FontRenderContext;
-import java.awt.font.GlyphVector;
-import java.awt.font.LineMetrics;
-import java.awt.font.TextAttribute;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.text.CharacterIterator;
-import java.text.StringCharacterIterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-
-import gnu.java.awt.font.FontDelegate;
-import gnu.java.awt.font.FontFactory;
-import gnu.java.awt.peer.ClasspathFontPeer;
-
-public class XFontPeer2
- extends ClasspathFontPeer
-{
-
- /**
- * The font mapping as specified in the file fonts.properties.
- */
- private static Properties fontProperties;
- static
- {
- fontProperties = new Properties();
- InputStream in = XFontPeer2.class.getResourceAsStream("fonts.properties");
- try
- {
- fontProperties.load(in);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
-
- private class XLineMetrics
- extends LineMetrics
- {
-
- private Font font;
- private GlyphVector glyphVector;
-// private CharacterIterator characterIterator;
-// private int begin;
-// private int limit;
- private FontRenderContext fontRenderContext;
- XLineMetrics(Font f, CharacterIterator ci, int b, int l,
- FontRenderContext rc)
- {
- font = f;
-// characterIterator = ci;
-// begin = b;
-// limit = l;
- fontRenderContext = rc;
- glyphVector = fontDelegate.createGlyphVector(font, fontRenderContext,
- ci);
- }
-
- public float getAscent()
- {
- return fontDelegate.getAscent(font.getSize(), fontRenderContext.getTransform(),
- fontRenderContext.isAntiAliased(),
- fontRenderContext.usesFractionalMetrics(), true);
- }
-
- public int getBaselineIndex()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public float[] getBaselineOffsets()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public float getDescent()
- {
- return (int) fontDelegate.getDescent(font.getSize(), IDENDITY, false,
- false, false);
- }
-
- public float getHeight()
- {
- return (float) glyphVector.getLogicalBounds().getHeight();
- }
-
- public float getLeading()
- {
- return getHeight() - getAscent() - getDescent();
- }
-
- public int getNumChars()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public float getStrikethroughOffset()
- {
- return 0.F;
- }
-
- public float getStrikethroughThickness()
- {
- return 0.F;
- }
-
- public float getUnderlineOffset()
- {
- return 0.F;
- }
-
- public float getUnderlineThickness()
- {
- return 0.F;
- }
-
- }
-
- private class XFontMetrics
- extends FontMetrics
- {
- /**
- * A cached point instance, to be used in #charWidth().
- */
- private Point2D cachedPoint = new Point2D.Double();
-
- XFontMetrics(Font f)
- {
- super(f);
- }
-
- public int getAscent()
- {
- return (int) fontDelegate.getAscent(getFont().getSize(), IDENDITY,
- false, false, false);
- }
-
- public int getDescent()
- {
- return (int) fontDelegate.getDescent(getFont().getSize(), IDENDITY,
- false, false, false);
- }
-
- public int getHeight()
- {
- GlyphVector gv = fontDelegate.createGlyphVector(getFont(),
- new FontRenderContext(IDENDITY, false, false),
- new StringCharacterIterator("m"));
- Rectangle2D b = gv.getVisualBounds();
- return (int) b.getHeight();
- }
-
- public int charWidth(char c)
- {
- int code = fontDelegate.getGlyphIndex(c);
- Point2D advance = cachedPoint;
- fontDelegate.getAdvance(code, font.getSize2D(), IDENDITY,
- false, false, true, advance);
- return (int) advance.getX();
- }
-
- public int charsWidth(char[] chars, int offs, int len)
- {
- return stringWidth(new String(chars, offs, len));
- }
-
- public int stringWidth(String s)
- {
- GlyphVector gv = fontDelegate.createGlyphVector(getFont(),
- new FontRenderContext(IDENDITY, false, false),
- new StringCharacterIterator(s));
- Rectangle2D b = gv.getVisualBounds();
- return (int) b.getWidth();
- }
- }
-
- /**
- * The indendity transform, to be used in several methods.
- */
- private static final AffineTransform IDENDITY = new AffineTransform();
-
- private FontDelegate fontDelegate;
-
- XFontPeer2(String name, int style, int size)
- {
- super(name, style, size);
- try
- {
- File fontfile = new File("/usr/share/fonts/truetype/freefont/FreeSans.ttf");
- FileInputStream in = new FileInputStream(fontfile);
- FileChannel ch = in.getChannel();
- ByteBuffer buffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
- fontfile.length());
- fontDelegate = FontFactory.createFonts(buffer)[0];
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- XFontPeer2(String name, Map atts)
- {
- super(name, atts);
- try
- {
- File fontfile = new File("/usr/share/fonts/truetype/freefont/FreeSans.ttf");
- FileInputStream in = new FileInputStream(fontfile);
- FileChannel ch = in.getChannel();
- ByteBuffer buffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
- fontfile.length());
- fontDelegate = FontFactory.createFonts(buffer)[0];
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- public boolean canDisplay(Font font, int c)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public int canDisplayUpTo(Font font, CharacterIterator i, int start, int limit)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public String getSubFamilyName(Font font, Locale locale)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public String getPostScriptName(Font font)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public int getNumGlyphs(Font font)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public int getMissingGlyphCode(Font font)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public byte getBaselineFor(Font font, char c)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public String getGlyphName(Font font, int glyphIndex)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public GlyphVector createGlyphVector(Font font, FontRenderContext frc, CharacterIterator ci)
- {
- return fontDelegate.createGlyphVector(font, frc, ci);
- }
-
- public GlyphVector createGlyphVector(Font font, FontRenderContext ctx, int[] glyphCodes)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public GlyphVector layoutGlyphVector(Font font, FontRenderContext frc, char[] chars, int start, int limit, int flags)
- {
- StringCharacterIterator i = new StringCharacterIterator(new String(chars), start, limit, 0);
- return fontDelegate.createGlyphVector(font, frc, i);
- }
-
- public FontMetrics getFontMetrics(Font font)
- {
- return new XFontMetrics(font);
- }
-
- public boolean hasUniformLineMetrics(Font font)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public LineMetrics getLineMetrics(Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc)
- {
- return new XLineMetrics(font, ci, begin, limit, rc);
- }
-
- public Rectangle2D getMaxCharBounds(Font font, FontRenderContext rc)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- /**
- * Encodes a font name + style + size specification into a X logical font
- * description (XLFD) as described here:
- *
- * http://www.meretrx.com/e93/docs/xlfd.html
- *
- * This is implemented to look up the font description in the
- * fonts.properties of this package.
- *
- * @param name the font name
- * @param atts the text attributes
- *
- * @return the encoded font description
- */
- static String encodeFont(String name, Map atts)
- {
- String family = name;
- if (family == null || family.equals(""))
- family = (String) atts.get(TextAttribute.FAMILY);
- if (family == null)
- family = "SansSerif";
-
- int size = 12;
- Float sizeFl = (Float) atts.get(TextAttribute.SIZE);
- if (sizeFl != null)
- size = sizeFl.intValue();
-
- int style = 0;
- // Detect italic attribute.
- Float posture = (Float) atts.get(TextAttribute.POSTURE);
- if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
- style |= Font.ITALIC;
-
- // Detect bold attribute.
- Float weight = (Float) atts.get(TextAttribute.WEIGHT);
- if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
- style |= Font.BOLD;
-
- return encodeFont(name, style, size);
- }
-
- /**
- * Encodes a font name + style + size specification into a X logical font
- * description (XLFD) as described here:
- *
- * http://www.meretrx.com/e93/docs/xlfd.html
- *
- * This is implemented to look up the font description in the
- * fonts.properties of this package.
- *
- * @param name the font name
- * @param style the font style
- * @param size the font size
- *
- * @return the encoded font description
- */
- static String encodeFont(String name, int style, int size)
- {
- StringBuilder key = new StringBuilder();
- key.append(validName(name));
- key.append('.');
- switch (style)
- {
- case Font.BOLD:
- key.append("bold");
- break;
- case Font.ITALIC:
- key.append("italic");
- break;
- case (Font.BOLD | Font.ITALIC):
- key.append("bolditalic");
- break;
- case Font.PLAIN:
- default:
- key.append("plain");
-
- }
-
- String protoType = fontProperties.getProperty(key.toString());
- int s = size;
- return protoType.replaceFirst("%d", String.valueOf(s * 10));
- }
-
- /**
- * Checks the specified font name for a valid font name. If the font name
- * is not known, then this returns 'sansserif' as fallback.
- *
- * @param name the font name to check
- *
- * @return a valid font name
- */
- static String validName(String name)
- {
- String retVal;
- if (name.equalsIgnoreCase("sansserif")
- || name.equalsIgnoreCase("serif")
- || name.equalsIgnoreCase("monospaced")
- || name.equalsIgnoreCase("dialog")
- || name.equalsIgnoreCase("dialoginput"))
- {
- retVal = name.toLowerCase();
- }
- else
- {
- retVal = "sansserif";
- }
- return retVal;
- }
-}
XFramePeer(Frame f)
{
super(f);
+ setTitle(f.getTitle());
}
public void setIconImage(Image image)
public void setTitle(String title)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ xwindow.set_wm_name (title);
}
public int getState()
package gnu.java.awt.peer.x;
import java.awt.Color;
+import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.Toolkit;
+import java.awt.Transparency;
import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
import java.awt.image.ImageObserver;
import java.awt.image.Raster;
+import java.awt.peer.FontPeer;
import java.util.HashMap;
+import java.util.WeakHashMap;
+import gnu.java.awt.image.AsyncImage;
import gnu.java.awt.java2d.AbstractGraphics2D;
import gnu.java.awt.java2d.ScanlineCoverage;
import gnu.x11.Colormap;
extends AbstractGraphics2D
{
+ /**
+ * When this property is set to true, then images are always rendered as
+ * opaque images, ignoring their translucence. This is intended for
+ * debugging and demonstration purposes.
+ */
+ private static final boolean RENDER_OPAQUE =
+ Boolean.getBoolean("escherpeer.renderopaque");
+
/**
* The X Drawable to draw on.
*/
//setClip(new Rectangle(0, 0, xdrawable.width, xdrawable.height));
}
+ @Override
protected void rawDrawLine(int x0, int y0, int x1, int y1)
{
xdrawable.segment(xgc, x0, y0, x1, y1);
}
+ @Override
+ protected void rawDrawRect(int x, int y, int w, int h)
+ {
+ xdrawable.rectangle(xgc, x, y, w, h, false);
+ }
+
+ @Override
protected void rawFillRect(int x, int y, int w, int h)
{
xdrawable.rectangle(xgc, x, y, w, h, true);
}
}
+ @Override
public void renderScanline(int y, ScanlineCoverage c)
{
+ if (y >= xdrawable.height)
+ return;
+
+ // TODO: Handle Composite and Paint.
ScanlineCoverage.Iterator iter = c.iterate();
- float coverageAlpha = 0;
+ int coverageAlpha = 0;
int maxCoverage = c.getMaxCoverage();
- Color old = getColor();
- Color col = getColor();
- if (col == null)
- col = Color.BLACK;
while (iter.hasNext())
{
ScanlineCoverage.Range range = iter.next();
- // TODO: Dumb implementation for testing.
+
coverageAlpha = range.getCoverage();
- if (coverageAlpha > 0)
+ int x0 = range.getXPos();
+ int l = range.getLength();
+ if (coverageAlpha == c.getMaxCoverage())
+ {
+ // Simply paint the current color over the existing pixels.
+ xdrawable.fill_rectangle(xgc, x0, y, l, 1);
+ }
+ else if (coverageAlpha > 0)
{
- int red = col.getRed();
- int green = col.getGreen();
- int blue = col.getBlue();
- if (coverageAlpha < c.getMaxCoverage())
+ // Composite the current color with the existing pixels.
+ int x1 = x0 + l;
+ x0 = Math.min(Math.max(0, x0), xdrawable.width - 1);
+ x1 = Math.min(Math.max(0, x1), xdrawable.width - 1);
+ if ((x1 - x0) < 1)
+ continue;
+ l = x1 - x0;
+ gnu.x11.image.ZPixmap existing = (ZPixmap)
+ xdrawable.image(x0, y, l, 1, 0xFFFFFFFF,
+ gnu.x11.image.Image.Format.ZPIXMAP);
+ for (int x = 0; x < l; x++)
{
- float alpha = coverageAlpha / maxCoverage;
- red = 255 - (int) ((255 - red) * alpha);
- green = 255 - (int) ((255 - green) * alpha);
- blue = 255 - (int) ((255 - blue) * alpha);
+ Color col = getColor();
+ if (col == null)
+ {
+ col = Color.BLACK;
+ }
+ int red = col.getRed();
+ int green = col.getGreen();
+ int blue = col.getBlue();
+ int redOut = existing.get_red(x, 0);
+ int greenOut = existing.get_green(x, 0);
+ int blueOut = existing.get_blue(x, 0);
+ int outAlpha = maxCoverage - coverageAlpha;
+ redOut = redOut * outAlpha + red * coverageAlpha;
+ redOut = redOut / maxCoverage;
+ greenOut = greenOut * outAlpha + green * coverageAlpha;
+ greenOut = greenOut / maxCoverage;
+ blueOut = blueOut * outAlpha + blue * coverageAlpha;
+ blueOut = blueOut / maxCoverage;
+ existing.set(x, 0, redOut, greenOut, blueOut);
}
- xgc.set_foreground(red << 16 | green << 8 | blue);
- int x0 = range.getXPos();
- int l = range.getLength();
- xdrawable.fill_rectangle(xgc, x0, y, l, 1);
+ xdrawable.put_image(xgc, existing, x0, y);
}
}
- if (old != null)
- xgc.set_foreground(old.getRGB());
- }
-
- protected void fillScanline(int x0, int x1, int y)
- {
- xdrawable.segment(xgc, x0, y, x1, y);
- }
-
- protected void fillScanlineAA(int x0, int x1, int y, int alpha)
- {
- //System.err.println("fillScanlineAA: " + x0 + ", " + x1 + ", " + y + ", " + alpha);
- // FIXME: This is for testing only.
- Color c = getColor();
- setColor(new Color(255-alpha, 255-alpha, 255-alpha));
- xdrawable.segment(xgc, x0, y, x1, y);
- setColor(c);
}
protected void init()
super.setPaint(p);
if (p instanceof Color)
{
+ // TODO: Optimize for different standard bit-depths.
Color c = (Color) p;
XToolkit tk = (XToolkit) Toolkit.getDefaultToolkit();
HashMap colorMap = tk.colorMap;
}
}
+ private static WeakHashMap<Image,ZPixmap> imageCache = new WeakHashMap<Image,ZPixmap>();
+
protected boolean rawDrawImage(Image image, int x, int y, ImageObserver obs)
{
+ image = unwrap(image);
boolean ret;
if (image instanceof XImage)
{
pvi.getHeight(obs), x, y);
ret = true;
}
+ else if (image instanceof BufferedImage)
+ {
+ BufferedImage bi = (BufferedImage) image;
+ DataBuffer db = bi.getRaster().getDataBuffer();
+ if (db instanceof ZPixmapDataBuffer)
+ {
+ ZPixmapDataBuffer zpmdb = (ZPixmapDataBuffer) db;
+ ZPixmap zpixmap = zpmdb.getZPixmap();
+ xdrawable.put_image(xgc, zpixmap, x, y);
+ ret = true;
+ }
+ else
+ {
+ int transparency = bi.getTransparency();
+ int w = bi.getWidth();
+ int h = bi.getHeight();
+ if (imageCache.containsKey(image))
+ {
+ ZPixmap zpixmap = imageCache.get(image);
+ xdrawable.put_image(xgc, zpixmap, x, y);
+ }
+ else if (transparency == Transparency.OPAQUE || RENDER_OPAQUE)
+ {
+ XGraphicsDevice gd = XToolkit.getDefaultDevice();
+ ZPixmap zpixmap = new ZPixmap(gd.getDisplay(), w, h);
+ for (int yy = 0; yy < h; yy++)
+ {
+ for (int xx = 0; xx < w; xx++)
+ {
+ int rgb = bi.getRGB(xx, yy);
+ zpixmap.set(xx, yy, rgb);
+ }
+ }
+ xdrawable.put_image(xgc, zpixmap, x, y);
+ imageCache.put(image, zpixmap);
+ } else {
+ ZPixmap zpixmap = (ZPixmap) xdrawable.image(x, y, w, h,
+ 0xffffffff,
+ gnu.x11.image.Image.Format.ZPIXMAP);
+ for (int yy = 0; yy < h; yy++)
+ {
+ for (int xx = 0; xx < w; xx++)
+ {
+ int rgb = bi.getRGB(xx, yy);
+ int alpha = 0xff & (rgb >> 24);
+ if (alpha == 0)
+ {
+ // Completely translucent.
+ rgb = zpixmap.get_red(xx, yy) << 16
+ | zpixmap.get_green(xx, yy) << 8
+ | zpixmap.get_blue(xx, yy);
+ }
+ else if (alpha < 255)
+ {
+ // Composite pixels.
+ int red = 0xff & (rgb >> 16);
+ red = red * alpha
+ + (255 - alpha) * zpixmap.get_red(xx, yy);
+ red = red / 255;
+ int green = 0xff & (rgb >> 8);
+ green = green * alpha
+ + (255 - alpha) * zpixmap.get_green(xx, yy);
+ green = green / 255;
+ int blue = 0xff & rgb;
+ blue = blue * alpha
+ + (255 - alpha) * zpixmap.get_blue(xx, yy);
+ blue = blue / 255;
+ rgb = red << 16 | green << 8 | blue;
+ }
+ // else keep rgb value from source image.
+
+ zpixmap.set(xx, yy, rgb);
+ }
+ }
+ xdrawable.put_image(xgc, zpixmap, x, y);
+ // We can't cache prerendered translucent images, because
+ // we never know how the background changes.
+ }
+ ret = true;
+ }
+ }
else
{
ret = super.rawDrawImage(image, x, y, obs);
return ret;
}
+ public void setFont(Font f)
+ {
+ super.setFont(f);
+ FontPeer p = getFont().getPeer();
+ if (p instanceof XFontPeer)
+ {
+ XFontPeer xFontPeer = (XFontPeer) p;
+ xgc.set_font(xFontPeer.getXFont());
+ }
+ }
+
+ public void drawString(String s, int x, int y)
+ {
+ FontPeer p = getFont().getPeer();
+ if (p instanceof XFontPeer)
+ {
+ int tx = (int) transform.getTranslateX();
+ int ty = (int) transform.getTranslateY();
+ xdrawable.text(xgc, x + tx, y + ty, s);
+ }
+ else
+ {
+ super.drawString(s, x, y);
+ }
+ }
+
+ /**
+ * Extracts an image instance out of an AsyncImage. If the image isn't
+ * an AsyncImage, then the original instance is returned.
+ *
+ * @param im the image
+ *
+ * @return the image to render
+ */
+ private Image unwrap(Image im)
+ {
+ Image image = im;
+ if (image instanceof AsyncImage)
+ {
+ AsyncImage aIm = (AsyncImage) image;
+ image = aIm.getRealImage();
+ }
+ return image;
+ }
}
package gnu.java.awt.peer.x;
+import gnu.x11.Display;
+import gnu.x11.Screen;
+
+import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.Point;
throw new UnsupportedOperationException("Not yet implemented.");
}
+ /**
+ * Determines the size of the primary screen.
+ *
+ * @return the size of the primary screen
+ */
+ Dimension getSize()
+ {
+ // TODO: A GraphicsConfiguration should correspond to a Screen instance.
+ Display d = device.getDisplay();
+ Screen screen = d.default_screen;
+ int w = screen.width;
+ int h = screen.height;
+ return new Dimension(w, h);
+ }
+
+ /**
+ * Determines the resolution of the primary screen in pixel-per-inch.
+ *
+ * @returnthe resolution of the primary screen in pixel-per-inch
+ */
+ int getResolution()
+ {
+ Display d = device.getDisplay();
+ Screen screen = d.default_screen;
+ int w = screen.width * 254;
+ int h = screen.height * 254;
+ int wmm = screen.width_in_mm * 10;
+ int hmm = screen.height_in_mm * 10;
+ int xdpi = w / wmm;
+ int ydpi = h / hmm;
+ int dpi = (xdpi + ydpi) / 2;
+ return dpi;
+ }
+
}
package gnu.java.awt.peer.x;
+import gnu.java.awt.font.OpenTypeFontPeer;
import gnu.java.awt.java2d.RasterGraphics;
import gnu.x11.Display;
public String[] getAvailableFontFamilyNames()
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ return getAvailableFontFamilyNames(Locale.getDefault());
}
public String[] getAvailableFontFamilyNames(Locale l)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ // TODO: This doesn't work when we are using X fonts.
+ // Fix this.
+ return OpenTypeFontPeer.getAvailableFontFamilyNames(l);
}
}
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Frame;
+import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import gnu.classpath.SystemProperties;
import gnu.java.awt.ClasspathToolkit;
import gnu.java.awt.EmbeddedWindow;
+import gnu.java.awt.font.OpenTypeFontPeer;
+import gnu.java.awt.image.ImageConverter;
import gnu.java.awt.peer.ClasspathFontPeer;
import gnu.java.awt.peer.EmbeddedWindowPeer;
import gnu.java.awt.peer.swing.SwingCanvasPeer;
/**
* The cached fonts.
*/
- private WeakHashMap fontCache = new WeakHashMap();
+ private WeakHashMap<String,ClasspathFontPeer> fontCache =
+ new WeakHashMap<String,ClasspathFontPeer>();
public XToolkit()
{
*/
public ClasspathFontPeer getClasspathFontPeer(String name, Map attrs)
{
- String canonical = XFontPeer2.encodeFont(name, attrs);
ClasspathFontPeer font;
- if (!fontCache.containsKey(canonical))
+ if ("true".equals(System.getProperty("escherpeer.usexfonts")))
{
- String graphics2d =
- SystemProperties.getProperty("gnu.xawt.graphics2d");
- //if (graphics2d != null && graphics2d.equals("gl"))
- font = new XFontPeer2(name, attrs);
-// else
-// font = new XFontPeer(name, attrs);
- fontCache.put(canonical, font);
+ String canonical = XFontPeer.encodeFont(name, attrs);
+ if (!fontCache.containsKey(canonical))
+ {
+ font = new XFontPeer(name, attrs);
+ fontCache.put(canonical, font);
+ }
+ else
+ {
+ font = fontCache.get(canonical);
+ }
}
else
{
- font = (ClasspathFontPeer) fontCache.get(canonical);
+ String canonical = OpenTypeFontPeer.encodeFont(name, attrs);
+ if (!fontCache.containsKey(canonical))
+ {
+ font = new OpenTypeFontPeer(name, attrs);
+ fontCache.put(canonical, font);
+ }
+ else
+ {
+ font = fontCache.get(canonical);
+ }
}
return font;
}
public Dimension getScreenSize()
{
- // FIXME: This is only a hack to get some apps working.
- return new Dimension(1024, 768);
+ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice gd = ge.getDefaultScreenDevice();
+ GraphicsConfiguration gc = gd.getDefaultConfiguration();
+ XGraphicsConfiguration xgc = (XGraphicsConfiguration) gc;
+
+ return xgc.getSize();
}
public int getScreenResolution()
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice gd = ge.getDefaultScreenDevice();
+ GraphicsConfiguration gc = gd.getDefaultConfiguration();
+ XGraphicsConfiguration xgc = (XGraphicsConfiguration) gc;
+
+ return xgc.getResolution();
}
/**
public String[] getFontList()
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ return ge.getAvailableFontFamilyNames();
}
public FontMetrics getFontMetrics(Font name)
{
ImageConverter conv = new ImageConverter();
producer.startProduction(conv);
- Image image = conv.getXImage();
+ Image image = conv.getImage();
return image;
}
}
@Override
- public boolean isModalExclusionTypeSupported
- (Dialog.ModalExclusionType modalExclusionType)
+ public boolean isModalExclusionTypeSupported(ModalExclusionType modalExclusionType)
{
- // TODO: Implement properly.
+ // TODO Auto-generated method stub
return false;
}
@Override
- public boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
+ public boolean isModalityTypeSupported(ModalityType modalityType)
{
- // TODO: Implement properly.
+ // TODO Auto-generated method stub
return false;
}
-
}
package gnu.java.awt.peer.x;
import java.awt.Component;
+import java.awt.Dialog;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.FontMetrics;
+import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.event.WindowEvent;
import java.awt.image.VolatileImage;
+import gnu.x11.Atom;
import gnu.x11.Window;
import gnu.x11.event.Event;
+import gnu.java.awt.font.OpenTypeFontPeer;
+import gnu.java.awt.peer.ClasspathFontPeer;
import gnu.java.awt.peer.swing.SwingWindowPeer;
public class XWindowPeer
/**
* The X window.
*/
- private Window xwindow;
+ protected Window xwindow;
+
+ /**
+ * The frame insets. These get updated in {@link #show()}.
+ */
+ private Insets insets;
XWindowPeer(java.awt.Window window)
{
XGraphicsDevice dev = XToolkit.getDefaultDevice();
// TODO: Maybe initialize lazily in show().
+ Window.Attributes atts = new Window.Attributes();
// FIXME: Howto generate a Window without decorations?
int x = Math.max(window.getX(), 0);
int y = Math.max(window.getY(), 0);
int w = Math.max(window.getWidth(), 1);
int h = Math.max(window.getHeight(), 1);
- xwindow = new Window(dev.getDisplay().default_root, x, y, w, h);
- xwindow.create();
+ xwindow = new Window(dev.getDisplay().default_root, x, y, w, h, 0, atts);
xwindow.select_input(standardSelect);
dev.getEventPump().registerWindow(xwindow, window);
+
+ boolean undecorated;
+ if (awtComponent instanceof Frame)
+ {
+ Frame f = (Frame) awtComponent;
+ undecorated = f.isUndecorated();
+ }
+ else if (awtComponent instanceof Dialog)
+ {
+ Dialog d = (Dialog) awtComponent;
+ undecorated = d.isUndecorated();
+ }
+ else
+ {
+ undecorated = true;
+ }
+ if (undecorated)
+ {
+ // First try the Motif implementation of undecorated frames. This
+ // is semantically closest and supported by all major window
+ // managers.
+ // TODO: At the time of writing this, there's no freedesktop.org
+ // standard extension that matches the required semantic. Maybe
+ // undecorated frames are added in the future, if so, then use these.
+ Atom at = Atom.intern(dev.getDisplay(), "_MOTIF_WM_HINTS");
+ if (at != null)
+ {
+ xwindow.change_property(Window.REPLACE, at, at, 32,
+ new int[]{1 << 1, 0, 0, 0, 0}, 0, 5);
+ }
+ }
+ insets = new Insets(0, 0, 0, 0);
}
public void toBack()
*/
public Graphics getGraphics()
{
- return new XGraphics2D(xwindow);
+ XGraphics2D xg2d = new XGraphics2D(xwindow);
+ xg2d.setColor(awtComponent.getForeground());
+ xg2d.setBackground(awtComponent.getBackground());
+ xg2d.setFont(awtComponent.getFont());
+ return xg2d;
}
public Image createImage(int w, int h)
*/
public void show()
{
-// // Prevent ResizeRedirect events.
-// //xwindow.select_input(noResizeRedirectSelect);
-// Window.Attributes atts = new Window.Attributes();
-// atts.set_override_redirect(true);
-// xwindow.change_attributes(atts);
-
// Prevent ResizeRedirect events.
//xwindow.select_input(Event.NO_EVENT_MASK);
//xwindow.select_input(noResizeRedirectSelect);
+ XGraphicsDevice dev = XToolkit.getDefaultDevice();
xwindow.map();
EventQueue eq = XToolkit.getDefaultToolkit().getSystemEventQueue();
java.awt.Window w = (java.awt.Window) super.awtComponent;
// // Reset input selection.
// atts.set_override_redirect(false);
// xwindow.change_attributes(atts);
+
+ // Determine the frame insets.
+ Atom atom = (Atom) Atom.intern(dev.getDisplay(), "_NET_FRAME_EXTENTS");
+ Window.Property p = xwindow.get_property(false, atom, Atom.CARDINAL, 0,
+ Window.MAX_WM_LENGTH);
+ if (p.format() != 0)
+ {
+ insets = new Insets(p.value(0), p.value(1), p.value(2), p.value(3));
+ Window.Changes ch = new Window.Changes();
+ ch.width(awtComponent.getWidth() - insets.left - insets.top);
+ ch.height(awtComponent.getHeight() - insets.top - insets.bottom);
+ xwindow.configure(ch);
+ }
+
}
/**
*/
public void reshape(int x, int y, int width, int height)
{
- // Prevent ResizeRedirect events.
-// //xwindow.select_input(noResizeRedirectSelect);
-// Window.Attributes atts = new Window.Attributes();
-// atts.set_override_redirect(true);
-// xwindow.change_attributes(atts);
-
// Need to substract insets because AWT size is including insets,
- // and X size is excuding insets.
- Insets i = insets();
- xwindow.move_resize(x - i.left, y - i.right, width - i.left - i.right,
- height - i.top - i.bottom);
-
- // Reset input selection.
-// atts = new Window.Attributes();
-// atts.set_override_redirect(false);
-// xwindow.change_attributes(atts);
+ // and X size is excluding insets.
+ if (! callback)
+ {
+ Insets i = insets;
+ xwindow.move_resize(x - i.left, y - i.right, width - i.left - i.right,
+ height - i.top - i.bottom);
+ }
}
public Insets insets()
{
- Insets i = new Insets(0, 0, 0, 0);
-// Window.GeometryReply g = xwindow.geometry();
-// int b = g.border_width();
-// Insets i = new Insets(b, b, b, b);
-// Window.WMSizeHints wmSize = xwindow.wm_normal_hints();
-// if (wmSize != null)
-// {
-// i.left = wmSize.x() - g.x();
-// i.right = wmSize.width() - g.width() - i.left ;
-// i.top = wmSize.y() - g.y();
-// i.bottom = wmSize.height() - g.height() - i.top;
-// }
-// System.err.println("insets: " + i);
- return i;
+ return (Insets) insets.clone();
}
/**
*/
public FontMetrics getFontMetrics(Font font)
{
- XFontPeer2 fontPeer = (XFontPeer2) font.getPeer();
+ ClasspathFontPeer fontPeer = (ClasspathFontPeer) font.getPeer();
return fontPeer.getFontMetrics(font);
}
zpixmap.set_data_element(i, (byte) val);
}
+ ZPixmap getZPixmap()
+ {
+ return zpixmap;
+ }
+
}
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
-import java.awt.print.PrinterGraphics;
import java.awt.print.PrinterJob;
import java.io.BufferedWriter;
import java.io.File;
import javax.print.DocFlavor;
import javax.print.attribute.DocAttributeSet;
import java.io.File;
-import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.Reader;
package gnu.java.io;
-import java.util.StringTokenizer;
-
/**
* We had many changes in File.java, URLStreamHandler.java etc. to handle
* path representations on different platforms (Windows/Unix-family).
{
try
{
- mainMethod.invoke(null,args);
+ mainMethod.invoke(null,(Object) args);
}
catch(IllegalAccessException e)
{
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.TypeVariable;
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
-import javax.management.MBeanInfo;
import javax.management.NotCompliantMBeanException;
import javax.management.ReflectionException;
import javax.management.StandardMBean;
import javax.management.openmbean.ArrayType;
-import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenMBeanParameterInfo;
import javax.management.openmbean.OpenMBeanParameterInfoSupport;
import javax.management.openmbean.OpenType;
-import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
Method getter = null;
try
{
- getter = vClass.getMethod("get" + field, null);
+ getter = vClass.getMethod("get" + field);
}
catch (NoSuchMethodException e)
{
}
try
{
- values.add(getter.invoke(value, null));
+ values.add(getter.invoke(value));
}
catch (IllegalAccessException e)
{
return (MBeanInfo) openInfo;
}
+ /**
+ * Override this method so as to prevent the description of a constructor's
+ * parameter being @code{null}. Open MBeans can not have @code{null} descriptions,
+ * but one will occur as the names of parameters aren't stored for reflection.
+ *
+ * @param constructor the constructor whose parameter needs describing.
+ * @param parameter the parameter to be described.
+ * @param sequenceNo the number of the parameter to describe.
+ * @return a description of the constructor's parameter.
+ */
+ protected String getDescription(MBeanConstructorInfo constructor,
+ MBeanParameterInfo parameter,
+ int sequenceNo)
+ {
+ String desc = parameter.getDescription();
+ if (desc == null)
+ return "param" + sequenceNo;
+ else
+ return desc;
+ }
+
+ /**
+ * Override this method so as to prevent the description of an operation's
+ * parameter being @code{null}. Open MBeans can not have @code{null} descriptions,
+ * but one will occur as the names of parameters aren't stored for reflection.
+ *
+ * @param operation the operation whose parameter needs describing.
+ * @param parameter the parameter to be described.
+ * @param sequenceNo the number of the parameter to describe.
+ * @return a description of the operation's parameter.
+ */
+ protected String getDescription(MBeanOperationInfo operation,
+ MBeanParameterInfo parameter,
+ int sequenceNo)
+ {
+ String desc = parameter.getDescription();
+ if (desc == null)
+ return "param" + sequenceNo;
+ else
+ return desc;
+ }
+
+ /**
+ * Override this method so as to prevent the name of a constructor's
+ * parameter being @code{null}. Open MBeans can not have @code{null} names,
+ * but one will occur as the names of parameters aren't stored for reflection.
+ *
+ * @param constructor the constructor whose parameter needs a name.
+ * @param parameter the parameter to be named.
+ * @param sequenceNo the number of the parameter to name.
+ * @return a description of the constructor's parameter.
+ */
+ protected String getParameterName(MBeanConstructorInfo constructor,
+ MBeanParameterInfo parameter,
+ int sequenceNo)
+ {
+ String name = parameter.getName();
+ if (name == null)
+ return "param" + sequenceNo;
+ else
+ return name;
+ }
+
+ /**
+ * Override this method so as to prevent the name of an operation's
+ * parameter being @code{null}. Open MBeans can not have @code{null} names,
+ * but one will occur as the names of parameters aren't stored for reflection.
+ *
+ * @param operation the operation whose parameter needs a name.
+ * @param parameter the parameter to be named.
+ * @param sequenceNo the number of the parameter to name.
+ * @return a description of the operation's parameter.
+ */
+ protected String getParameterName(MBeanOperationInfo operation,
+ MBeanParameterInfo parameter,
+ int sequenceNo)
+ {
+ String name = parameter.getName();
+ if (name == null)
+ return "param" + sequenceNo;
+ else
+ return name;
+ }
+
public MBeanInfo getMBeanInfo()
{
super.getMBeanInfo();
public static String getEncodingOfMethod(Method m)
{
Class[] paramTypes = m.getParameterTypes();
- StringBuffer buf = new StringBuffer().append('(');
+ StringBuilder buf = new StringBuilder("(");
for (int i = 0; i < paramTypes.length; i++)
buf.append(getEncodingOfClass(paramTypes[i].getName(), true));
buf.append(')').append(getEncodingOfClass(m.getReturnType().getName(),
public static String getEncodingOfConstructor(Constructor c)
{
Class[] paramTypes = c.getParameterTypes();
- StringBuffer buf = new StringBuffer().append('(');
+ StringBuilder buf = new StringBuilder("(");
for (int i = 0; i < paramTypes.length; i++)
buf.append(getEncodingOfClass(paramTypes[i].getName(), true));
buf.append(")V");
import java.text.Collator;
import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
* This class provides common helper methods
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.zip.GZIPInputStream;
import gnu.java.net.PlainDatagramSocketImpl;
import java.io.IOException;
-import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.DatagramChannel;
if (buffer == null)
{
- buffer = ByteBuffer.allocate ((int) count);
+ buffer = ByteBuffer.allocate (count);
src.read (buffer);
buffer.flip();
}
package gnu.java.nio;
-import java.io.IOException;
-import java.nio.ByteBuffer;
import java.nio.channels.SelectableChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
package gnu.java.nio;
-import gnu.java.net.PlainSocketImpl;
import java.io.IOException;
import java.net.Socket;
import java.nio.channels.SocketChannel;
import java.io.IOException;
import java.net.ServerSocket;
-import java.net.SocketTimeoutException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.NotYetBoundException;
import java.nio.channels.ServerSocketChannel;
package gnu.java.nio;
-import gnu.java.net.PlainSocketImpl;
-import gnu.java.net.VMPlainSocketImpl;
-
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
-import java.nio.ReadOnlyBufferException;
import java.nio.channels.AlreadyConnectedException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.ConnectionPendingException;
import java.nio.channels.NoConnectionPendingException;
import java.nio.channels.NotYetConnectedException;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.nio.channels.UnresolvedAddressException;
import java.nio.channels.UnsupportedAddressTypeException;
public SocketChannelSelectionKeyImpl(SocketChannelImpl ch, SelectorImpl impl)
{
super(ch, impl);
- this.ch = (SocketChannelImpl) ch;
+ this.ch = ch;
}
/**
import java.nio.charset.CoderResult;
/**
- * A generic encoding framework for single-byte encodings,
- * utilizing a look-up table.
+ * A generic encoding framework for single-byte encodings, utilizing a look-up
+ * table.
+ *
+ * This replaces the gnu.java.io.EncoderEightBitLookup class, created by Aron
+ * Renn.
*
- * This replaces the gnu.java.io.EncoderEightBitLookup class,
- * created by Aron Renn.
- *
* @author Sven de Marothy
+ * @modified Ian Rogers
*/
abstract class ByteCharset extends Charset
{
- protected char[] lookupTable;
- /**
- * Char to signify the character in the table is undefined
- */
- protected static final char NONE = (char)0xFFFD;
+ protected final char[] lookupTable;
+ /**
+ * Char to signify the character in the table is undefined
+ */
+ protected static final char NONE = (char) 0xFFFD;
- ByteCharset (String canonicalName, String[] aliases)
+ ByteCharset(String canonicalName, String[] aliases, char[] lookup)
{
- super (canonicalName, aliases);
+ super(canonicalName, aliases);
+ lookupTable = lookup;
}
/**
- * Most western charsets include ASCII, but this should
- * be overloaded for others.
+ * Most western charsets include ASCII, but this should be overloaded for
+ * others.
*/
- public boolean contains (Charset cs)
+ public boolean contains(Charset cs)
{
return cs instanceof US_ASCII || (cs.getClass() == getClass());
}
return lookupTable;
}
- public CharsetDecoder newDecoder ()
+ public CharsetDecoder newDecoder()
{
- return new Decoder (this);
+ return new Decoder(this);
}
- public CharsetEncoder newEncoder ()
+ public CharsetEncoder newEncoder()
{
- return new Encoder (this);
+ return new Encoder(this);
}
private static final class Decoder extends CharsetDecoder
{
- private char[] lookup;
-
+ /** Lookup of byte to char mappings */
+ private final char[] lookup;
+
+ /** Helper to decode loops */
+ private final ByteDecodeLoopHelper helper = new ByteDecodeLoopHelper()
+ {
+ protected boolean isMappable(byte b)
+ {
+ return lookup[(int) (b & 0xFF)] != NONE;
+ }
+ protected char mapToChar(byte b)
+ {
+ return lookup[(int) (b & 0xFF)];
+ }
+ };
+
// Package-private to avoid a trampoline constructor.
- Decoder (ByteCharset cs)
+ Decoder(ByteCharset cs)
{
- super (cs, 1.0f, 1.0f);
+ super(cs, 1.0f, 1.0f);
lookup = cs.getLookupTable();
}
- protected CoderResult decodeLoop (ByteBuffer in, CharBuffer out)
+ protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out)
{
- // TODO: Optimize this in the case in.hasArray() / out.hasArray()
- while (in.hasRemaining ())
- {
- byte b = in.get ();
- char c;
-
- if (!out.hasRemaining ())
- {
- in.position (in.position () - 1);
- return CoderResult.OVERFLOW;
- }
-
- if((c = lookup[(int) (b & 0xFF)]) == NONE)
- {
- in.position (in.position () - 1);
- return CoderResult.unmappableForLength (1);
- }
- out.put (c);
- }
-
- return CoderResult.UNDERFLOW;
+ return helper.decodeLoop(in, out);
}
}
private static final class Encoder extends CharsetEncoder
{
- private byte[] lookup;
-
+ /** Lookup of char to byte mappings */
+ private final byte[] lookup;
+
+ /** Helper to encode loops */
+ private final ByteEncodeLoopHelper helper = new ByteEncodeLoopHelper()
+ {
+ protected boolean isMappable(char c)
+ {
+ return canEncode(c);
+ }
+ protected byte mapToByte(char c)
+ {
+ return lookup[c];
+ }
+ };
+
// Package-private to avoid a trampoline constructor.
- Encoder (ByteCharset cs)
+ Encoder(ByteCharset cs)
{
- super (cs, 1.0f, 1.0f);
+ super(cs, 1.0f, 1.0f);
char[] lookup_table = cs.getLookupTable();
// Create the inverse look-up table.
- // determine required size of encoding_table:
- int max = 0;
+ // determine required size of encoding_table:
+ int max = 0;
for (int i = 0; i < lookup_table.length; i++)
- {
- int c = (int)lookup_table[i];
- max = (c > max && c < NONE) ? c : max;
- }
+ {
+ int c = (int) lookup_table[i];
+ max = (c > max && c < NONE) ? c : max;
+ }
+
+ lookup = new byte[max + 1];
- lookup = new byte[max+1];
-
for (int i = 0; i < lookup_table.length; i++)
- {
- int c = (int)lookup_table[i];
- if (c != 0 && c < NONE)
- {
- lookup[c] = (byte)i;
- }
- }
+ {
+ int c = (int) lookup_table[i];
+ if (c != 0 && c < NONE)
+ {
+ lookup[c] = (byte) i;
+ }
+ }
}
public boolean canEncode(char c)
{
for (int i = 0; i < cs.length(); ++i)
{
- if (! canEncode(cs.charAt(i)))
+ if (!canEncode(cs.charAt(i)))
return false;
}
return true;
}
- protected CoderResult encodeLoop (CharBuffer in, ByteBuffer out)
+ protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out)
{
- // TODO: Optimize this in the case in.hasArray() / out.hasArray()
- while (in.hasRemaining ())
- {
- int c = (int)in.get ();
-
- if (!out.hasRemaining ())
- {
- in.position (in.position () - 1);
- return CoderResult.OVERFLOW;
- }
-
- // lookup byte encoding
- byte b = (c < lookup.length) ? lookup[c] : (byte)0;
-
- if ((int)b != 0 || (int)c == 0)
- {
- out.put (b);
- } else {
- in.position (in.position () - 1);
- return CoderResult.unmappableForLength (1);
- }
- }
-
- return CoderResult.UNDERFLOW;
+ return helper.encodeLoop(in, out);
}
}
}
--- /dev/null
+/* ByteCharset.java -- Abstract class for generic 1-byte encodings.
+ Copyright (C) 2005 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 gnu.java.nio.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CoderResult;
+
+/**
+ * Helper class to deal with decoding loops that read a byte at a time
+ *
+ * @author Ian Rogers
+ */
+public abstract class ByteDecodeLoopHelper
+{
+ /**
+ * @return can the given byte be encoded
+ */
+ protected abstract boolean isMappable(byte b);
+
+ /**
+ * Map the given byte to a char, the given byte is guaranteed to be mappable
+ */
+ protected abstract char mapToChar(byte b);
+
+ /**
+ * Encodes one or more characters into one or more bytes, mapping each
+ * character to only one byte
+ *
+ * @param in character buffer to read from
+ * @param out byte buffer to write to
+ * @return the result state of the encoder
+ */
+ CoderResult decodeLoop(ByteBuffer in, CharBuffer out)
+ {
+ if (in.hasArray() && out.hasArray())
+ {
+ return arrayDecodeLoop(in, out);
+ } else
+ {
+ return normalDecodeLoop(in, out);
+ }
+ }
+
+ /**
+ * Encode loop using get and put operations
+ */
+ private CoderResult normalDecodeLoop(ByteBuffer in, CharBuffer out)
+ {
+ int outRemaining = out.remaining();
+ int inRemaining = in.remaining();
+ while (inRemaining > 0 && outRemaining > 0)
+ {
+ byte b = in.get();
+ inRemaining--;
+
+ if (!isMappable(b))
+ {
+ in.position(in.position() - 1);
+ return CoderResult.unmappableForLength(1);
+ }
+ char c = mapToChar(b);
+ out.put(c);
+ outRemaining--;
+ }
+ if (inRemaining > 0)
+ {
+ return CoderResult.OVERFLOW;
+ } else
+ {
+ return CoderResult.UNDERFLOW;
+ }
+ }
+
+ /**
+ * Encode loop using array read and write operations
+ */
+ private CoderResult arrayDecodeLoop(ByteBuffer in, CharBuffer out)
+ {
+ byte[] inArray = in.array();
+ char[] outArray = out.array();
+ int inPos = in.arrayOffset() + in.position();
+ int outPos = out.arrayOffset() + out.position();
+ int inRemaining = in.remaining();
+ int outRemaining = out.remaining();
+ CoderResult result;
+ if (inRemaining <= outRemaining)
+ {
+ for (int i = 0; i < inRemaining; i++)
+ {
+ byte b = inArray[inPos];
+ inPos++;
+ if (!isMappable(b))
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+ break;
+ }
+ char c = mapToChar(b);
+ outArray[outPos] = c;
+ outPos++;
+ }
+ result = CoderResult.UNDERFLOW;
+ }
+ else
+ {
+ for (int i = 0; i < outRemaining; i++)
+ {
+ byte b = inArray[inPos];
+ inPos++;
+ if (!isMappable(b))
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+ break;
+ }
+ char c = mapToChar(b);
+ outArray[outPos] = c;
+ outPos++;
+ }
+ result = CoderResult.OVERFLOW;
+ }
+ in.position(inPos - in.arrayOffset());
+ out.position(outPos - out.arrayOffset());
+ return result;
+ }
+}
--- /dev/null
+/* ByteCharset.java -- Abstract class for generic 1-byte encodings.
+ Copyright (C) 2005 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 gnu.java.nio.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CoderResult;
+
+/**
+ * Helper class to deal with encoding loops that write a byte at a time
+ *
+ * @author Ian Rogers
+ */
+public abstract class ByteEncodeLoopHelper
+{
+ /**
+ * @return can the given character be encoded
+ */
+ protected abstract boolean isMappable(char c);
+
+ /**
+ * Map the given character to a byte, the given character is guaranteed to be
+ * mappable
+ */
+ protected abstract byte mapToByte(char c);
+
+ /**
+ * Encodes one or more characters into one or more bytes, mapping each
+ * character to only one byte
+ *
+ * @param in character buffer to read from
+ * @param out byte buffer to write to
+ * @return the result state of the encoder
+ */
+ CoderResult encodeLoop(CharBuffer in, ByteBuffer out)
+ {
+ if (in.hasArray() && out.hasArray())
+ {
+ return arrayEncodeLoop(in, out);
+ } else
+ {
+ return normalEncodeLoop(in, out);
+ }
+ }
+
+ /**
+ * Encode loop using get and put operations
+ */
+ private CoderResult normalEncodeLoop(CharBuffer in, ByteBuffer out)
+ {
+ int outRemaining = out.remaining();
+ int inRemaining = in.remaining();
+ while (inRemaining > 0 && outRemaining > 0)
+ {
+ char c = in.get();
+ inRemaining--;
+
+ if (!isMappable(c))
+ {
+ in.position(in.position() - 1);
+ return CoderResult.unmappableForLength(1);
+ }
+ byte b = mapToByte(c);
+ out.put(b);
+ outRemaining--;
+ }
+ if (inRemaining > 0)
+ {
+ return CoderResult.OVERFLOW;
+ } else
+ {
+ return CoderResult.UNDERFLOW;
+ }
+ }
+
+ /**
+ * Encode loop using array read and write operations
+ */
+ private CoderResult arrayEncodeLoop(CharBuffer in, ByteBuffer out)
+ {
+ char[] inArray = in.array();
+ byte[] outArray = out.array();
+ int inPos = in.arrayOffset() + in.position();
+ int outPos = out.arrayOffset() + out.position();
+ int inRemaining = in.remaining();
+ int outRemaining = out.remaining();
+ CoderResult result;
+ if (inRemaining <= outRemaining)
+ {
+ for (int i = 0; i < inRemaining; i++)
+ {
+ char inChar = inArray[inPos];
+ inPos++;
+ if (!isMappable(inChar))
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+ break;
+ }
+ byte b = mapToByte(inChar);
+ outArray[outPos] = b;
+ outPos++;
+ }
+ result = CoderResult.UNDERFLOW;
+ }
+ else
+ {
+ for (int i = 0; i < outRemaining; i++)
+ {
+ char inChar = inArray[inPos];
+ inPos++;
+ if (!isMappable(inChar))
+ {
+ inPos--;
+ result = CoderResult.unmappableForLength(1);
+ break;
+ }
+ byte b = mapToByte(inChar);
+ outArray[outPos] = b;
+ outPos++;
+ }
+ result = CoderResult.OVERFLOW;
+ }
+ in.position(inPos - in.arrayOffset());
+ out.position(outPos - out.arrayOffset());
+ return result;
+ }
+}
package gnu.java.nio.charset;
-public class Cp424 extends ByteCharset
+public final class Cp424 extends ByteCharset
{
/**
* This is the lookup table for this encoding
*/
- private static final char[] lookup =
+ private static final char[] lookup =
{
- 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F,
- 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
- 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087,
- 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F,
- 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B,
- 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007,
- 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
- 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A,
- 0x0020, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6,
- 0x05D7, 0x05D8, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C,
- 0x0026, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
- 0x05E0, 0x05E1, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC,
- 0x002D, 0x002F, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
- 0x05E8, 0x05E9, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F,
- NONE, 0x05EA, NONE, NONE, 0x00A0, NONE, NONE, NONE,
- 0x2017, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022,
- NONE, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
- 0x0068, 0x0069, 0x00AB, 0x00BB, NONE, NONE, NONE, 0x00B1,
- 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070,
- 0x0071, 0x0072, NONE, NONE, NONE, 0x00B8, NONE, 0x00A4,
- 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
- 0x0079, 0x007A, NONE, NONE, NONE, NONE, NONE, 0x00AE,
- 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC,
- 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7,
- 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
- 0x0048, 0x0049, 0x00AD, NONE, NONE, NONE, NONE, NONE,
- 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
- 0x0051, 0x0052, 0x00B9, NONE, NONE, NONE, NONE, NONE,
- 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
- 0x0059, 0x005A, 0x00B2, NONE, NONE, NONE, NONE, NONE,
- 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F,
+ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087,
+ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B,
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007,
+ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A,
+ 0x0020, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6,
+ 0x05D7, 0x05D8, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C,
+ 0x0026, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
+ 0x05E0, 0x05E1, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC,
+ 0x002D, 0x002F, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
+ 0x05E8, 0x05E9, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F,
+ NONE, 0x05EA, NONE, NONE, 0x00A0, NONE, NONE, NONE,
+ 0x2017, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022,
+ NONE, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x00AB, 0x00BB, NONE, NONE, NONE, 0x00B1,
+ 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070,
+ 0x0071, 0x0072, NONE, NONE, NONE, 0x00B8, NONE, 0x00A4,
+ 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, NONE, NONE, NONE, NONE, NONE, 0x00AE,
+ 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC,
+ 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7,
+ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x00AD, NONE, NONE, NONE, NONE, NONE,
+ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
+ 0x0051, 0x0052, 0x00B9, NONE, NONE, NONE, NONE, NONE,
+ 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+ 0x0059, 0x005A, 0x00B2, NONE, NONE, NONE, NONE, NONE,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
0x0038, 0x0039, 0x00B3, NONE, NONE, NONE, NONE, 0x009F
};
- public Cp424()
- {
- super("Cp424", new String[] {
- });
- lookupTable = lookup;
+ public Cp424() {
+ super("Cp424", new String[] {}, lookup);
}
} // class Cp424
package gnu.java.nio.charset;
-public class Cp437 extends ByteCharset
+public final class Cp437 extends ByteCharset
{
/**
public Cp437()
{
- super("Cp437", new String[] {
- });
- lookupTable = lookup;
+ super("Cp437", new String[]{}, lookup);
}
} // class Cp437
package gnu.java.nio.charset;
-public class Cp737 extends ByteCharset
+public final class Cp737 extends ByteCharset
{
/**
public Cp737()
{
- super("Cp737", new String[] {
- });
- lookupTable = lookup;
+ super("Cp737", new String[] {}, lookup);
}
} // class Cp737
package gnu.java.nio.charset;
-public class Cp775 extends ByteCharset
+public final class Cp775 extends ByteCharset
{
/**
public Cp775()
{
- super("Cp775", new String[] {
- });
- lookupTable = lookup;
+ super("Cp775", new String[] {}, lookup);
}
} // class Cp775
package gnu.java.nio.charset;
-public class Cp850 extends ByteCharset
+public final class Cp850 extends ByteCharset
{
/**
public Cp850()
{
- super("Cp850", new String[] {
- });
- lookupTable = lookup;
+ super("Cp850", new String[] {}, lookup);
}
} // class Cp850
package gnu.java.nio.charset;
-public class Cp852 extends ByteCharset
+public final class Cp852 extends ByteCharset
{
/**
public Cp852()
{
- super("Cp852", new String[] {
- });
- lookupTable = lookup;
+ super("Cp852", new String[] {}, lookup);
}
} // class Cp852
package gnu.java.nio.charset;
-public class Cp855 extends ByteCharset
+public final class Cp855 extends ByteCharset
{
/**
public Cp855()
{
- super("Cp855", new String[] {
- "cp-855",
- });
- lookupTable = lookup;
+ super("Cp855", new String[] {"cp-855",}, lookup);
}
} // class Cp855
package gnu.java.nio.charset;
-public class Cp857 extends ByteCharset
+public final class Cp857 extends ByteCharset
{
/**
public Cp857()
{
- super("Cp857", new String[] {
- "cp-857"
- });
- lookupTable = lookup;
+ super("Cp857", new String[] {"cp-857"}, lookup);
}
} // class Cp857
package gnu.java.nio.charset;
-public class Cp860 extends ByteCharset
+public final class Cp860 extends ByteCharset
{
/**
public Cp860()
{
- super("Cp860", new String[] {
- "cp-860"
- });
- lookupTable = lookup;
+ super("Cp860", new String[] {"cp-860"}, lookup);
}
} // class Cp860
package gnu.java.nio.charset;
-public class Cp861 extends ByteCharset
+public final class Cp861 extends ByteCharset
{
/**
public Cp861()
{
- super("Cp861", new String[] {
- "cp-861"
- });
- lookupTable = lookup;
+ super("Cp861", new String[] {"cp-861"}, lookup);
}
} // class Cp861
package gnu.java.nio.charset;
-public class Cp862 extends ByteCharset
+public final class Cp862 extends ByteCharset
{
/**
public Cp862()
{
- super("Cp862", new String[] {
- "Cp-862"
- });
- lookupTable = lookup;
+ super("Cp862", new String[] {"Cp-862"}, lookup);
}
} // class Cp862
package gnu.java.nio.charset;
-public class Cp863 extends ByteCharset
+public final class Cp863 extends ByteCharset
{
/**
public Cp863()
{
- super("Cp863", new String[] {
- "Cp-863"
- });
- lookupTable = lookup;
+ super("Cp863", new String[] {"Cp-863"}, lookup);
}
} // class Cp863
package gnu.java.nio.charset;
-public class Cp864 extends ByteCharset
+public final class Cp864 extends ByteCharset
{
/**
public Cp864()
{
- super("Cp864", new String[] {
- "Cp-864"
- });
- lookupTable = lookup;
+ super("Cp864", new String[] {"Cp-864"}, lookup);
}
} // class Cp864
package gnu.java.nio.charset;
-public class Cp865 extends ByteCharset
+public final class Cp865 extends ByteCharset
{
/**
public Cp865()
{
- super("Cp865", new String[] {
- "Cp-865"
- });
- lookupTable = lookup;
+ super("Cp865", new String[] {"Cp-865"}, lookup);
}
} // class Cp865
package gnu.java.nio.charset;
-public class Cp866 extends ByteCharset
+public final class Cp866 extends ByteCharset
{
/**
public Cp866()
{
- super("Cp866", new String[] {
- "cp-866"
- });
- lookupTable = lookup;
+ super("Cp866", new String[] {"cp-866"}, lookup);
}
} // class Cp866
package gnu.java.nio.charset;
-public class Cp869 extends ByteCharset
+public final class Cp869 extends ByteCharset
{
/**
public Cp869()
{
- super("Cp869", new String[] {
- "Cp-869"
- });
- lookupTable = lookup;
+ super("Cp869", new String[] {"Cp-869"}, lookup);
}
} // class Cp869
package gnu.java.nio.charset;
-public class Cp874 extends ByteCharset
+public final class Cp874 extends ByteCharset
{
/**
public Cp874()
{
- super("Cp874", new String[] {
- });
- lookupTable = lookup;
+ super("Cp874", new String[] {}, lookup);
}
} // class Cp874
* Contains the mapping from java.io canonical names
* to java.nio canonical names.
*/
- private static HashMap canonicalNames;
+ private static final HashMap<String,String> canonicalNames;
static {
- canonicalNames = new HashMap();
+ canonicalNames = new HashMap<String,String>();
canonicalNames.put("US-ASCII", "ASCII");
canonicalNames.put("windows-1250", "Cp1250");
canonicalNames.put("windows-1251", "Cp1251");
*/
public static String getDefaultEncoding()
{
- String encoding;
try
{
return System.getProperty("file.encoding");
* ISO-8859-1 charset.
*
* @author Jesse Rosenstock
+ * @modified Ian Rogers
*/
final class ISO_8859_1 extends Charset
{
private static final class Decoder extends CharsetDecoder
{
+ /** Helper to decode loops */
+ private static final ByteDecodeLoopHelper helper = new ByteDecodeLoopHelper()
+ {
+ protected boolean isMappable(byte b)
+ {
+ return true;
+ }
+ protected char mapToChar(byte b)
+ {
+ return (char)(b & 0xFF);
+ }
+ };
+
// Package-private to avoid a trampoline constructor.
Decoder (Charset cs)
{
protected CoderResult decodeLoop (ByteBuffer in, CharBuffer out)
{
- // TODO: Optimize this in the case in.hasArray() / out.hasArray()
- while (in.hasRemaining ())
- {
- byte b = in.get ();
-
- if (!out.hasRemaining ())
- {
- in.position (in.position () - 1);
- return CoderResult.OVERFLOW;
- }
-
- out.put ((char) (b & 0xFF));
- }
-
- return CoderResult.UNDERFLOW;
+ return helper.decodeLoop(in, out);
}
}
private static final class Encoder extends CharsetEncoder
{
+ /** Helper to encode loops */
+ private static final ByteEncodeLoopHelper helper = new ByteEncodeLoopHelper()
+ {
+ protected boolean isMappable(char c)
+ {
+ return c <= 0xff;
+ }
+ protected byte mapToByte(char c)
+ {
+ return (byte)c;
+ }
+ };
// Package-private to avoid a trampoline constructor.
Encoder (Charset cs)
{
protected CoderResult encodeLoop (CharBuffer in, ByteBuffer out)
{
- // TODO: Optimize this in the case in.hasArray() / out.hasArray()
- while (in.hasRemaining ())
- {
- char c = in.get ();
-
- if (c > 0xFF)
- {
- in.position (in.position () - 1);
- return CoderResult.unmappableForLength (1);
- }
- if (!out.hasRemaining ())
- {
- in.position (in.position () - 1);
- return CoderResult.OVERFLOW;
- }
-
- out.put ((byte) c);
- }
-
- return CoderResult.UNDERFLOW;
+ return helper.encodeLoop(in, out);
}
}
}
/**
* Encoding table for ISO-8859-13, ISO Latin-7 char set.
*/
-public class ISO_8859_13 extends ByteCharset
+public final class ISO_8859_13 extends ByteCharset
{
/**
"8859_13",
"cp921",
"921"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_13
/**
* Encoding table for ISO-8859-15, ISO Latin-9 char set.
*/
-public class ISO_8859_15 extends ByteCharset
+public final class ISO_8859_15 extends ByteCharset
{
/**
"cp923",
"923",
"windows-28605"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_15
/**
* Encoding table for ISO-8859-2, ISO Latin-2 char set.
*/
-public class ISO_8859_2 extends ByteCharset
+public final class ISO_8859_2 extends ByteCharset
{
/**
"cp912",
"912",
"windows-28592"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_2
/**
* Encoding table for ISO-8859-3, ISO Latin-3 char set.
*/
-public class ISO_8859_3 extends ByteCharset
+public final class ISO_8859_3 extends ByteCharset
{
/**
"cp913",
"913",
"windows-28593"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_3
/**
* Encoding table for ISO-8859-4, ISO Latin-4 char set.
*/
-public class ISO_8859_4 extends ByteCharset
+public final class ISO_8859_4 extends ByteCharset
{
/**
"cp914",
"914",
"windows-28594"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_4
/**
* Encoding table for ISO-8859-5, ISO cyrillic char set.
*/
-public class ISO_8859_5 extends ByteCharset
+public final class ISO_8859_5 extends ByteCharset
{
/**
"cp915",
"915",
"windows-28595"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_5
/**
* Encoding table for ISO-8859-6, ISO Arabic char set.
*/
-public class ISO_8859_6 extends ByteCharset
+public final class ISO_8859_6 extends ByteCharset
{
/**
"windows-28596",
"ISO-8859-6-I",
"ISO-8859-6-E"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_6
/**
* Encoding table for ISO-8859-7, ISO Latin/Greek char set.
*/
-public class ISO_8859_7 extends ByteCharset
+public final class ISO_8859_7 extends ByteCharset
{
/**
"cp813",
"813",
"windows-28597"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_7
/**
* Encoding table for ISO-8859-8, ISO Latin/Hebrew char set.
*/
-public class ISO_8859_8 extends ByteCharset
+public final class ISO_8859_8 extends ByteCharset
{
/**
"cp916",
"916",
"windows-28598"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_8
/**
* Encoding table for ISO-8859-9, ISO Latin-5 char set.
*/
-public class ISO_8859_9 extends ByteCharset
+public final class ISO_8859_9 extends ByteCharset
{
/**
"920",
"windows-28599",
"ECMA-128"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class ISO_8859_9
/**
* Encoding table for the KOI8 cyrillic char set.
*/
-public class KOI_8 extends ByteCharset
+public final class KOI_8 extends ByteCharset
{
/**
"koi8r",
"koi-8-r",
"koi"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class KOI_8
package gnu.java.nio.charset;
-public class MS874 extends ByteCharset
+public final class MS874 extends ByteCharset
{
/**
public MS874()
{
- super("MS874", new String[] {
- });
- lookupTable = lookup;
+ super("MS874", new String[] {}, lookup);
}
} // class MS874
package gnu.java.nio.charset;
-public class MacCentralEurope extends ByteCharset
+public final class MacCentralEurope extends ByteCharset
{
/**
public MacCentralEurope()
{
- super("MacCentralEurope", new String[] {
- });
- lookupTable = lookup;
+ super("MacCentralEurope", new String[] {}, lookup);
}
} // class MacCentralEurope
package gnu.java.nio.charset;
-public class MacCroatian extends ByteCharset
+public final class MacCroatian extends ByteCharset
{
/**
public MacCroatian()
{
- super("MacCroatian", new String[] {
- });
- lookupTable = lookup;
+ super("MacCroatian", new String[] {}, lookup);
}
} // class MacCroatian
package gnu.java.nio.charset;
-public class MacCyrillic extends ByteCharset
+public final class MacCyrillic extends ByteCharset
{
/**
public MacCyrillic()
{
- super("MacCyrillic", new String[] {
- });
- lookupTable = lookup;
+ super("MacCyrillic", new String[] {}, lookup);
}
} // class MacCyrillic
package gnu.java.nio.charset;
-public class MacDingbat extends ByteCharset
+public final class MacDingbat extends ByteCharset
{
/**
public MacDingbat()
{
- super("MacDingbat", new String[] {
- });
- lookupTable = lookup;
+ super("MacDingbat", new String[] {}, lookup);
}
} // class MacDingbat
package gnu.java.nio.charset;
-public class MacGreek extends ByteCharset
+public final class MacGreek extends ByteCharset
{
/**
public MacGreek()
{
- super("MacGreek", new String[] {
- });
- lookupTable = lookup;
+ super("MacGreek", new String[] {}, lookup);
}
} // class MacGreek
package gnu.java.nio.charset;
-public class MacIceland extends ByteCharset
+public final class MacIceland extends ByteCharset
{
/**
public MacIceland()
{
- super("MacIceland", new String[] {
- });
- lookupTable = lookup;
+ super("MacIceland", new String[] {}, lookup);
}
} // class MacIceland
package gnu.java.nio.charset;
-public class MacRoman extends ByteCharset
+public final class MacRoman extends ByteCharset
{
/**
public MacRoman()
{
- super("MacRoman", new String[] {
- });
- lookupTable = lookup;
+ super("MacRoman", new String[] {}, lookup);
}
} // class MacRoman
package gnu.java.nio.charset;
-public class MacRomania extends ByteCharset
+public final class MacRomania extends ByteCharset
{
/**
public MacRomania()
{
- super("MacRomania", new String[] {
- });
- lookupTable = lookup;
+ super("MacRomania", new String[] {}, lookup);
}
} // class MacRomania
package gnu.java.nio.charset;
-public class MacSymbol extends ByteCharset
+public final class MacSymbol extends ByteCharset
{
/**
public MacSymbol()
{
- super("MacSymbol", new String[] {
- });
- lookupTable = lookup;
+ super("MacSymbol", new String[] {}, lookup);
}
} // class MacSymbol
package gnu.java.nio.charset;
-public class MacThai extends ByteCharset
+public final class MacThai extends ByteCharset
{
/**
public MacThai()
{
- super("MacThai", new String[] {
- });
- lookupTable = lookup;
+ super("MacThai", new String[] {}, lookup);
}
} // class MacThai
package gnu.java.nio.charset;
-public class MacTurkish extends ByteCharset
+public final class MacTurkish extends ByteCharset
{
/**
public MacTurkish()
{
- super("MacTurkish", new String[] {
- });
- lookupTable = lookup;
+ super("MacTurkish", new String[] {}, lookup);
}
} // class MacTurkish
* are all lower-case to allow case-insensitive retrieval of
* Charset instances.
*/
- private final HashMap canonicalNames;
+ private final HashMap<String, String> canonicalNames;
/**
* Map from lower-case canonical name to Charset.
* TODO: We may want to use soft references. We would then need to keep
* track of the class name to regenerate the object.
*/
- private final HashMap charsets;
+ private final HashMap<String, Charset> charsets;
/**
* We don't load all available charsets at the start
Provider ()
{
extendedLoaded = false;
- canonicalNames = new HashMap ();
- charsets = new HashMap ();
+ canonicalNames = new HashMap<String,String> ();
+ charsets = new HashMap<String,Charset> ();
// US-ASCII aka ISO646-US
addCharset (new US_ASCII ());
extendedLoaded = true;
}
- public Iterator charsets ()
+ public Iterator<Charset> charsets ()
{
loadExtended();
return Collections.unmodifiableCollection (charsets.values ())
*/
canonicalNames.put(canonicalName, canonicalName);
- for (Iterator i = cs.aliases ().iterator (); i.hasNext (); )
+ for (Iterator<String> i = cs.aliases ().iterator (); i.hasNext (); )
canonicalNames.put (((String) i.next()).toLowerCase(), canonicalName);
}
{
// The default provider is safe to instantiate.
if (singleton == null)
- singleton = (Provider) AccessController.doPrivileged
- (new PrivilegedAction()
+ singleton = AccessController.doPrivileged
+ (new PrivilegedAction<Provider>()
{
- public Object run()
+ public Provider run()
{
return new Provider();
}
* US-ASCII charset.
*
* @author Jesse Rosenstock
+ * @modified Ian Rogers
*/
final class US_ASCII extends Charset
{
private static final class Decoder extends CharsetDecoder
{
+ /** Helper to decode loops */
+ private static final ByteDecodeLoopHelper helper = new ByteDecodeLoopHelper()
+ {
+ protected boolean isMappable(byte b)
+ {
+ return b >= 0;
+ }
+ protected char mapToChar(byte b)
+ {
+ return (char)b;
+ }
+ };
+
// Package-private to avoid a trampoline constructor.
Decoder (Charset cs)
{
protected CoderResult decodeLoop (ByteBuffer in, CharBuffer out)
{
- // TODO: Optimize this in the case in.hasArray() / out.hasArray()
- while (in.hasRemaining ())
- {
- byte b = in.get ();
-
- if (b < 0)
- {
- in.position (in.position () - 1);
- return CoderResult.malformedForLength (1);
- }
- if (!out.hasRemaining ())
- {
- in.position (in.position () - 1);
- return CoderResult.OVERFLOW;
- }
-
- out.put ((char) b);
- }
-
- return CoderResult.UNDERFLOW;
+ return helper.decodeLoop(in, out);
}
}
private static final class Encoder extends CharsetEncoder
{
+ /** Helper to encode loops */
+ private static final ByteEncodeLoopHelper helper = new ByteEncodeLoopHelper()
+ {
+ protected boolean isMappable(char c)
+ {
+ return c <= 0x7f;
+ }
+ protected byte mapToByte(char c)
+ {
+ return (byte)c;
+ }
+ };
// Package-private to avoid a trampoline constructor.
Encoder (Charset cs)
{
protected CoderResult encodeLoop (CharBuffer in, ByteBuffer out)
{
- // TODO: Optimize this in the case in.hasArray() / out.hasArray()
- while (in.hasRemaining ())
- {
- char c = in.get ();
-
- if (c > 0x7f)
- {
- in.position (in.position () - 1);
- return CoderResult.unmappableForLength (1);
- }
- if (!out.hasRemaining ())
- {
- in.position (in.position () - 1);
- return CoderResult.OVERFLOW;
- }
-
- out.put ((byte) c);
- }
-
- return CoderResult.UNDERFLOW;
+ return helper.encodeLoop(in, out);
}
}
}
* Encoding table for Windows-1250-Latin-1,
* aka cp1250 or Windows-1250 or whatever.
*/
-public class Windows1250 extends ByteCharset
+public final class Windows1250 extends ByteCharset
{
/**
"cp_1250",
"windows1250",
"windows_1250"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1250
* Encoding table for Windows-1251 Cyrillic char set.
* aka cp1251 or Windows-1251 or whatever.
*/
-public class Windows1251 extends ByteCharset
+public final class Windows1251 extends ByteCharset
{
/**
"cp_1251",
"windows1251",
"windows_1251"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1251
* Encoding table for Windows-1252-Latin-1,
* aka cp1252 or Windows-1252 or whatever.
*/
-public class Windows1252 extends ByteCharset
+public final class Windows1252 extends ByteCharset
{
/**
"windows-1252",
"cp1252",
"cp-1252"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1252
* Encoding table for Windows-1253 Greek char set.
* aka cp1253 or Windows-1253 or whatever.
*/
-public class Windows1253 extends ByteCharset
+public final class Windows1253 extends ByteCharset
{
/**
"cp_1253",
"windows1253",
"windows_1253"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1253
* Encoding table for Windows-1254 Turkish char set.
* aka cp1254 or Windows-1254 or whatever.
*/
-public class Windows1254 extends ByteCharset
+public final class Windows1254 extends ByteCharset
{
/**
"cp_1254",
"windows1254",
"windows_1254"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1254
* Encoding table for Windows-1255 Hebrew char set.
* aka cp1255 or Windows-1255 or whatever.
*/
-public class Windows1255 extends ByteCharset
+public final class Windows1255 extends ByteCharset
{
/**
"cp_1255",
"windows1255",
"windows_1255"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1255
* Encoding table for Windows-1256 Arabic char set.
* aka cp1256 or Windows-1256 or whatever.
*/
-public class Windows1256 extends ByteCharset
+public final class Windows1256 extends ByteCharset
{
/**
"cp_1256",
"windows1256",
"windows_1256"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1256
* Encoding table for Windows-1257 Baltic char set.
* aka cp1257 or Windows-1257 or whatever.
*/
-public class Windows1257 extends ByteCharset
+public final class Windows1257 extends ByteCharset
{
/**
"cp_1257",
"windows1257",
"windows_1257"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1257
* Encoding table for Windows-1258 Arabic char set.
* aka cp1258 or Windows-1258 or whatever.
*/
-public class Windows1258 extends ByteCharset
+public final class Windows1258 extends ByteCharset
{
/**
"cp_1258",
"windows1258",
"windows_1258"
- });
- lookupTable = lookup;
+ }, lookup);
}
} // class Windows1258
static {
ConnectionRunner[] pools = new ConnectionRunner[size];
for(int i = 0; i < pools.length; i++){
- pools[i] = new ConnectionRunner(group, new Integer(i).toString());
+ pools[i] = new ConnectionRunner(group, Integer.toString(i));
pools[i].setContextClassLoader(Thread.currentThread().getContextClassLoader());
pools[i].start();
}
if(freelist.size() == 0){
if(size < max_size){
++size;
- ConnectionRunner a = new ConnectionRunner(group, new Integer(size).toString());
+ ConnectionRunner a = new ConnectionRunner(group, Integer.toString(size));
a.start();
freelist.add(a);
}else
this.annotation = annotation;
}
- private MyClassLoader (URL[] urls, ClassLoader parent)
- {
- super (urls, parent);
- this.annotation = urlToAnnotation (urls);
- }
-
public static String urlToAnnotation (URL[] urls)
{
if (urls.length == 0)
import java.io.ObjectStreamClass;
import java.net.MalformedURLException;
import java.rmi.server.RMIClassLoader;
-import java.util.ArrayList;
public class RMIObjectInputStream
extends ObjectInputStream {
}
else if (key.equalsIgnoreCase(ALG_ALIAS + service + "." + algorithm))
{
- alias = (String) provider.getProperty(key);
+ alias = provider.getProperty(key);
if (! algorithm.equalsIgnoreCase(alias)) // does not refer to itself
{
algorithm = alias;
// 6. Let counter = 0 and offset = 2.
counter = 0;
offset = 2;
- step7: while (true)
+ while (true)
{
OFFSET = BigInteger.valueOf(offset & 0xFFFFFFFFL);
SEED_PLUS_OFFSET = SEED.add(OFFSET);
* comprised between the last entry in 'ranges' and the specified new range.
*
* @param new_range A new range to insert in the list.
- * @param new_attribute A new attribute to insert in the list.
+ * @param attr A new attribute to insert in the list.
*/
private final void addAttribute(int new_range, AttributedCharacterIterator.Attribute attr)
{
--- /dev/null
+/* LRUCache.java -- A LRU Cache implementation
+ Copyright (C) 2007 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 gnu.java.util;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * A least recently used cache, based on LinkedHashMap.
+ */
+public class LRUCache<K,V>
+ extends LinkedHashMap<K,V>
+{
+
+ /**
+ * The capacity of the cache.
+ */
+ private int capacity;
+
+ /**
+ * Creates a new LRUCache instance with the specified capacity.
+ *
+ * @param cap the capacity of the new cache
+ */
+ public LRUCache(int cap)
+ {
+ super();
+ capacity = cap;
+ }
+
+ /**
+ * Returns <code>true</code> when the oldest entry should be removed.
+ *
+ * @param eldest the entry about to be removed
+ *
+ * @return <code>true</code> when the oldest entry should be removed
+ */
+ protected boolean removeEldestEntry(Map.Entry<K, V> eldest)
+ {
+ return size() > capacity;
+ }
+}
import java.util.Locale;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
-import java.util.Stack;
import java.util.Vector;
/**
this.pos = position;
}
+ REException(String msg, Throwable cause, int type, int position) {
+ super(msg, cause);
+ this.type = type;
+ this.pos = position;
+ }
+
/**
* Returns the type of the exception, one of the constants listed above.
*/
* of the REmatch found this time so that another possible match
* may be found when backtrack is called.
* By default, nothing is added to the backtrackStack.
- * @param CharIndexed input Input character sequence.
+ * @param input Input character sequence.
* @param mymatch Position at which a match should be found
* @return REMatch object if a match was found, null otherwise.
*/
package gnu.java.util.regex;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
final class RETokenNamedProperty extends REToken {
String name;
boolean insens;
return true;
}
};
+ if (name.startsWith("java"))
+ {
+ try
+ {
+ Method m = Character.class.getMethod("is" + name.substring(4),
+ Character.TYPE);
+ return new JavaCategoryHandler(m);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new REException("Unsupported Java handler: " + name, e,
+ REException.REG_ESCAPE, 0);
+ }
+ }
throw new REException("unsupported name " + name, REException.REG_ESCAPE, 0);
}
}
}
+ /**
+ * Handle the Java-specific extensions \p{javaX} where X
+ * is a method from Character of the form isX
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+ private static class JavaCategoryHandler
+ extends Handler
+ {
+ private Method method;
+
+ public JavaCategoryHandler(Method m)
+ {
+ this.method = m;
+ }
+
+ public boolean includes(char c)
+ {
+ try
+ {
+ return (Boolean) method.invoke(null, c);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new InternalError("Unable to access method " + method);
+ }
+ catch (InvocationTargetException e)
+ {
+ throw new InternalError("Error invoking " + method);
+ }
+ }
+ }
+
}
DHPublicKey pub = (DHPublicKey) incoming;
DHParameterSpec s1 = key.getParams();
DHParameterSpec s2 = pub.getParams();
- if (! s1.getG().equals(s2.getG()) || ! s1.getP().equals(s2.getP())
- || s1.getL() != s2.getL())
+ if (! s1.getG().equals(s2.getG()) || ! s1.getP().equals(s2.getP()))
throw new InvalidKeyException("Incompatible key");
if (! lastPhase)
throw new IllegalArgumentException(
}
// 8. Let counter = 0
counter = 0;
- step9: while (true)
+ while (true)
{
// 9. Set R = seed + 2*m' + (L' * counter)
R = SEED
import java.io.IOException;
import javax.imageio.stream.ImageInputStream;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DirectColorModel;
package gnu.javax.imageio.bmp;
-import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import java.io.IOException;
*
* @param in - the stream (reads 6 bytes, does not close or reset).
* @return true if the signature is a valid GIF signature.
- * @throws an IOException if the signature could not be read.
+ * @throws IOException if the signature could not be read.
*/
public static boolean readSignature( InputStream in ) throws IOException
{
{
k += r;
r = (int) JPEGStream.readBits(s);
- s = (int) HuffmanTable.extend(r, s);
+ s = HuffmanTable.extend(r, s);
zz[k] = s;
}
else
import java.io.IOException;
import java.nio.ByteOrder;
-import javax.imageio.*;
import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
import javax.imageio.plugins.jpeg.JPEGQTable;
-import javax.imageio.spi.*;
-import javax.imageio.metadata.*;
import javax.imageio.stream.ImageInputStream;
import java.util.ArrayList;
import java.util.Hashtable;
-import java.util.Iterator;
import java.awt.Point;
import java.awt.Transparency;
import java.awt.color.ColorSpace;
// read in how much they need
for (int compIndex = 0; compIndex < numberOfComponents; compIndex++)
{
- JPEGComponent comp = (JPEGComponent) frame.components.getComponentByID(componentSelector[compIndex]);
+ JPEGComponent comp = frame.components.getComponentByID(componentSelector[compIndex]);
comp.readComponentMCU(jpegStream);
}
mcuIndex++;
{
for (int compIndex = 0; compIndex < numberOfComponents; compIndex++)
{
- JPEGComponent comp = (JPEGComponent) frame.components.getComponentByID(componentSelector[compIndex]);
+ JPEGComponent comp = frame.components.getComponentByID(componentSelector[compIndex]);
if (compIndex > 1)
comp.padMCU(mcuTotalIndex, resetInterval - mcuIndex);
comp.resetInterval();
// Unencode the data.
for (int i = 0; i < frame.getComponentCount(); i++)
{
- JPEGComponent comp =
- (JPEGComponent) frame.components.get(i);
+ JPEGComponent comp = frame.components.get(i);
comp.setQuantizationTable(qTables[comp.quant_id].getTable());
comp.quantitizeData();
comp.idctData(myDCT);
// Scale the image and write the data to the raster.
for (int i = 0; i < frame.getComponentCount(); i++)
{
- JPEGComponent comp = (JPEGComponent) frame.components.get(i);
+ JPEGComponent comp = frame.components.get(i);
comp.scaleByFactors();
comp.writeData(raster, i);
// Ensure garbage collection.
package gnu.javax.imageio.jpeg;
-// FIXME: change to IIOException
-import java.io.IOException;
import javax.imageio.*;
-import javax.imageio.spi.*;
-import javax.imageio.metadata.*;
-import javax.imageio.stream.ImageInputStream;
-import java.util.Iterator;
-import java.awt.image.BufferedImage;
public class JPEGException extends IIOException
{
public void setHuffmanTables(byte componentID, JPEGHuffmanTable ACTable,
JPEGHuffmanTable DCTable)
{
- JPEGComponent comp = (JPEGComponent)components.getComponentByID(componentID);
+ JPEGComponent comp = components.getComponentByID(componentID);
comp.setACTable(ACTable);
comp.setDCTable(DCTable);
}
package gnu.javax.imageio.jpeg;
-import java.io.EOFException;
import java.io.IOException;
-import javax.imageio.*;
-import javax.imageio.spi.*;
-import javax.imageio.metadata.*;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageInputStreamImpl;
-import java.util.Iterator;
-import java.awt.image.BufferedImage;
-
public class JPEGImageInputStream
extends ImageInputStreamImpl
{
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
/**
* Class to load and validate a generic PNG chunk.
/**
* Parse the appropriate color type and create an AWT raster for it.
- * @param raster - the file header.
+ * @param header - the file header.
*/
public WritableRaster getRaster( PNGHeader header )
{
import java.util.Vector;
import java.util.zip.Deflater;
import java.awt.color.ColorSpace;
-import java.awt.color.ICC_Profile;
import java.awt.color.ICC_ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DataBufferByte;
import java.awt.image.DataBufferUShort;
import java.awt.image.IndexColorModel;
-import java.awt.image.Raster;
import java.awt.image.WritableRaster;
public class PNGEncoder
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.awt.image.ColorModel;
-import java.awt.image.IndexColorModel;
import java.awt.color.ColorSpace;
public class PNGFile
package gnu.javax.imageio.png;
-import java.awt.color.ICC_ProfileGray;
-import java.awt.color.ICC_ProfileRGB;
-import java.awt.color.ICC_Profile;
-import java.awt.color.ICC_ColorSpace;
import java.awt.color.ColorSpace;
/**
* Constructs a new management server using the specified
* default domain, delegate bean and outer server.
*
- * @param domain the default domain to use for beans constructed
+ * @param defaultDomain the default domain to use for beans constructed
* with no specified domain.
* @param outer an {@link javax.management.MBeanServer} to pass
* to beans implementing the {@link MBeanRegistration}
if (name != null)
{
Object bean = getBean(name);
- Method method = bean.getClass().getMethod("getMBeanInfo", null);
- info = (MBeanInfo) method.invoke(bean, null);
+ Method method = bean.getClass().getMethod("getMBeanInfo");
+ info = (MBeanInfo) method.invoke(bean);
}
sm.checkPermission(new MBeanPermission((info == null) ?
null : info.getClassName(),
checkSecurity(name, null, "getMBeanInfo");
try
{
- Method method = bean.getClass().getMethod("getMBeanInfo", null);
- return (MBeanInfo) method.invoke(bean, null);
+ Method method = bean.getClass().getMethod("getMBeanInfo");
+ return (MBeanInfo) method.invoke(bean);
}
catch (NoSuchMethodException e)
{
- throw new IntrospectionException("The getMBeanInfo method " +
- "could not be found.");
+ try
+ {
+ return new StandardMBean(bean, null).getMBeanInfo();
+ }
+ catch (NotCompliantMBeanException ex)
+ {
+ throw new IntrospectionException("An error occurred in executing " +
+ "getMBeanInfo on the bean: " + ex + ".");
+ }
}
catch (IllegalAccessException e)
{
import java.lang.reflect.Array;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
Type[] gtypes = method.getGenericParameterTypes();
Object[] otypes = new Object[jtypes.length];
for (int a = 0; a < jtypes.length; ++a)
- otypes[a] = fromJava(jtypes[a], (Class<?>) gtypes[a]);
+ otypes[a] = fromJava(jtypes[a], gtypes[a]);
return otypes;
}
if (jtype instanceof List || jtype instanceof Set ||
jtype instanceof SortedSet)
{
- String elemType = tName.substring(tName.indexOf("<") + 1,
- tName.indexOf(">")).trim();
if (jtype instanceof SortedSet)
{
- Class<?> elemClass = Class.forName(elemType);
+ ParameterizedType ptype = (ParameterizedType) type;
+ Class<?> elemClass = (Class<?>) ptype.getActualTypeArguments()[0];
if (!Comparable.class.isAssignableFrom(elemClass))
throw new IllegalArgumentException(jtype + " has a " +
"non-comparable element " +
throw new IllegalArgumentException(jtype + " does not " +
"use natural ordering.");
}
- List elems = (List) jtype;
- Object[] celems = new Object[elems.size()];
- for (int a = 0; a < elems.size(); ++a)
+ Collection<Object> elems = (Collection<Object>) jtype;
+ int numElems = elems.size();
+ Object[] celems = new Object[numElems];
+ Iterator<Object> i = elems.iterator();
+ for (int a = 0; a < numElems; ++a)
{
- Object elem = elems.get(a);
+ Object elem = i.next();
celems[a] = fromJava(elem, elem.getClass());
}
return makeArraySpecific(celems);
SimpleType.STRING,
null, names);
}
- try
- {
- c.getMethod("from", new Class[] { CompositeData.class });
- Method[] methods = c.getDeclaredMethods();
- List<String> names = new ArrayList<String>();
- List<OpenType> types = new ArrayList<OpenType>();
- for (int a = 0; a < methods.length; ++a)
- {
- String name = methods[a].getName();
- if (name.startsWith("get"))
- {
- names.add(name.substring(3));
- types.add(getTypeFromClass(methods[a].getReturnType()));
- }
- }
- String[] fields = names.toArray(new String[names.size()]);
- CompositeType ctype = new CompositeType(c.getName(), c.getName(),
- fields, fields,
- types.toArray(new OpenType[types.size()]));
- return new OpenMBeanParameterInfoSupport("TransParam",
- "Translated parameter",
- ctype);
- }
- catch (NoSuchMethodException e)
- {
- /* Ignored; we expect this if this isn't a from(CompositeData) class */
- }
if (c.isArray())
{
int depth;
new ArrayType(depth, ot)
);
}
- throw new InternalError("The type used does not have an open type translation.");
+ Method[] methods = c.getDeclaredMethods();
+ List<String> names = new ArrayList<String>();
+ List<OpenType> types = new ArrayList<OpenType>();
+ for (int a = 0; a < methods.length; ++a)
+ {
+ String name = methods[a].getName();
+ if (Modifier.isPublic(methods[a].getModifiers()))
+ {
+ if (name.startsWith("get"))
+ {
+ names.add(name.substring(3));
+ types.add(getTypeFromClass(methods[a].getReturnType()));
+ }
+ else if (name.startsWith("is"))
+ {
+ names.add(name.substring(2));
+ types.add(getTypeFromClass(methods[a].getReturnType()));
+ }
+ }
+ }
+ if (names.isEmpty())
+ throw new OpenDataException("The type used does not have an open type translation.");
+ String[] fields = names.toArray(new String[names.size()]);
+ CompositeType ctype = new CompositeType(c.getName(), c.getName(),
+ fields, fields,
+ types.toArray(new OpenType[types.size()]));
+ return new OpenMBeanParameterInfoSupport("TransParam",
+ "Translated parameter",
+ ctype);
}
/**
* Creates a new naming context that uses naming service, represented by the
* given CORBA object.
*
- * @param namingService
+ * @param nsObject
* the naming service object. It must be possible to narrow it into
* the NamingContextExt.
* @param props
* the environment table.
- * @param orb
+ * @param anOrb
* the associated ORB. This reference is used during cleanup.
- * @param the
+ * @param aFactory
* parent factory. This reference is used during cleanup.
*/
public ContextContinuation(org.omg.CORBA.Object nsObject,
* context. The returned object will wrap around the newly created CORBA
* subcontext
*
- * @param name
+ * @param subContext
* the name of the new context being created
* @return the newly created context, bound to the instance of the context on
* that the method has been called
* context. The returned object will wrap around the newly created CORBA
* subcontext
*
- * @param name
+ * @param subContext
* the name of the new context being created
* @return the newly created context, bound to the instance of the context on
* that the method has been called
* action if such subcontext does not exist. The context being destroyed must
* be empty.
*
- * @param name
+ * @param subContext
* the name of the subcontext beig removed.
* @throws ContextNotEmptyException
* if the named context is not empty.
* action if such subcontext does not exist. The context being destroyed must
* be empty.
*
- * @param name
+ * @param subContext
* the name of the subcontext beig removed.
* @throws ContextNotEmptyException
* if the named context is not empty.
* and value of the new property must not be null. If the property is already
* defined, is current value is replaced by the propVal.
*
- * @param propName
+ * @param key
* the name of the new property
- * @param propVal
+ * @param value
* the value of the new property
* @return the previous value of this property or null if the property has not
* been previously defined
* the registry. The new registry will be lazily instantiated on the first
* call.
*
- * @param propName
+ * @param key
* the name of the new property
- * @param propVal
+ * @param value
* the value of the new property
* @return the previous value of this property or null if the property has not
* been previously defined
* @param name
* the object name (.toString()) is used to convert into string
* representation.
- * @param the
+ * @param obj
* object (must be an instance of Remote).
*/
public void rebind(Name name, Object obj) throws NamingException
*
* @param name
* the object name.
- * @param the
+ * @param obj
* object (must be an instance of Remote).
*/
public void rebind(String name, Object obj) throws NamingException
package gnu.javax.net.ssl;
import java.nio.ByteBuffer;
-import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLException;
public abstract class SSLRecordHandler
package gnu.javax.net.ssl;
import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
package gnu.javax.net.ssl.provider;
-import static gnu.javax.net.ssl.provider.CertificateRequest.ClientCertificateType;
-
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.security.AccessController;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
-import java.security.KeyManagementException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.MessageDigest;
import java.security.SignatureException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPublicKey;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
-import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPrivateKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
package gnu.javax.net.ssl.provider;
-import gnu.classpath.debug.Component;
-import gnu.classpath.debug.SystemLogger;
-
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
package gnu.javax.net.ssl.provider;
-import gnu.classpath.debug.Component;
-import gnu.classpath.debug.SystemLogger;
-
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
import java.nio.charset.Charset;
/**
package gnu.javax.net.ssl.provider;
-import java.io.EOFException;
-import java.io.InputStream;
-import java.io.IOException;
-
/**
* The content type enumeration, which marks packets in the record layer.
*
package gnu.javax.net.ssl.provider;
-import gnu.classpath.debug.Component;
-import gnu.classpath.debug.SystemLogger;
-
import java.io.PrintWriter;
import java.io.StringWriter;
package gnu.javax.net.ssl.provider;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.EOFException;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
import java.io.PrintWriter;
-import java.io.StringReader;
import java.io.StringWriter;
import java.nio.ByteBuffer;
-import java.security.PublicKey;
-
-import java.util.ArrayList;
-import java.util.Collections;
-
-import javax.net.ssl.SSLProtocolException;
-
/**
* An SSL handshake message. SSL handshake messages have the following
* form:
import java.nio.ByteBuffer;
import java.util.Arrays;
-import java.util.logging.Level;
import java.util.zip.DataFormatException;
import java.util.zip.Inflater;
-import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.Mac;
import gnu.classpath.debug.Component;
import gnu.classpath.debug.SystemLogger;
-import gnu.java.security.util.ByteArray;
import gnu.java.security.util.ByteBufferOutputStream;
import java.nio.ByteBuffer;
-import java.util.logging.Level;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
-import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.Mac;
import java.io.InputStream;
import java.io.IOException;
-import java.io.OutputStream;
public final class ProtocolVersion
implements Comparable<ProtocolVersion>, Constructed
package gnu.javax.net.ssl.provider;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyPair;
import java.security.KeyStore;
-import java.security.Security;
-
import java.util.HashMap;
import javax.net.ssl.ManagerFactoryParameters;
package gnu.javax.net.ssl.provider;
-import gnu.classpath.debug.Component;
-import gnu.classpath.debug.SystemLogger;
-
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.ByteBuffer;
// outgoing buffer. This isn't that great because we'd need to
// store and copy things unnecessarily.
//
- // 2. Build outgoing handshake objects “virtually,” that is, store them
+ // 2. Build outgoing handshake objects 'virtually', that is, store them
// as collections of objects, then compute the length, and then write
// them to a buffer, instead of making the objects views on
// ByteBuffers for both input and output. This would complicate the
// pretty OK), and we still need to figure out how exactly to chunk
// those objects across record boundaries.
//
- // 3. Try to build these objects on the buffer we’re given, but detect
+ // 3. Try to build these objects on the buffer we're given, but detect
// when we run out of space in the output buffer, and split the
// overflow message. This sounds like the best, but also probably
// the hardest to code.
setupSecurityParameters(keys, false, engine, compression);
}
}
-}
\ No newline at end of file
+}
import gnu.javax.crypto.key.GnuPBEKey;
import gnu.javax.net.ssl.Session;
-import gnu.javax.net.ssl.Session.ID;
-
import java.io.IOException;
import java.io.Serializable;
-import java.security.Certificate;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
-import java.security.cert.X509Certificate;
-
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SealedObject;
-import javax.crypto.spec.PBEKeySpec;
import javax.net.ssl.SSLException;
public class SessionImpl extends Session
package gnu.javax.net.ssl.provider;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.math.BigInteger;
-
import java.nio.ByteBuffer;
-import java.security.PublicKey;
-import java.security.interfaces.RSAKey;
-
-import java.util.Arrays;
-
-import gnu.java.security.der.*;
-
/**
* The signature structure.
*
import gnu.javax.net.ssl.AbstractSessionContext;
import gnu.javax.net.ssl.Session;
import gnu.javax.net.ssl.SessionStoreException;
-import gnu.javax.net.ssl.Session.ID;
-
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
package gnu.javax.net.ssl.provider;
import java.security.InvalidKeyException;
-import java.util.HashMap;
import java.util.Map;
import gnu.java.security.hash.IMessageDigest;
package gnu.javax.net.ssl.provider;
-import gnu.java.security.x509.X500DistinguishedName;
import gnu.javax.net.ssl.provider.Extension.Value;
import java.io.PrintWriter;
import gnu.javax.net.ssl.provider.Extension.Value;
-import java.io.PrintWriter;
-import java.io.StringWriter;
import java.nio.ByteBuffer;
public class UnresolvedExtensionValue extends Value
import java.security.interfaces.RSAPublicKey;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import java.util.List;
import javax.net.ssl.ManagerFactoryParameters;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.X509ExtendedKeyManager;
-import javax.net.ssl.X509KeyManager;
-
import gnu.javax.net.ssl.NullManagerParameters;
import gnu.javax.net.ssl.PrivateCredentials;
*/
void updateForSelectedService()
{
- PrinterMakeAndModel att1 = (PrinterMakeAndModel)
+ PrinterMakeAndModel att1 =
getSelectedPrintService().getAttribute(PrinterMakeAndModel.class);
typValue.setText(att1 == null ? "" : att1.getValue());
- PrinterInfo att2 = (PrinterInfo)
+ PrinterInfo att2 =
getSelectedPrintService().getAttribute(PrinterInfo.class);
infoValue.setText(att2 == null ? "" : att2.getValue());
- PrinterIsAcceptingJobs att3 = (PrinterIsAcceptingJobs)
+ PrinterIsAcceptingJobs att3 =
getSelectedPrintService().getAttribute(PrinterIsAcceptingJobs.class);
- PrinterState att4 = (PrinterState)
+ PrinterState att4 =
getSelectedPrintService().getAttribute(PrinterState.class);
String status = att4.toString();
import gnu.java.security.util.ExpirableObject;
-import javax.security.auth.DestroyFailedException;
-
/**
* Immutible, though destroyable, password class.
*
for(i = 0, j = offset; i < length; i++, j++)
{
- this.password[i] = (char) password[j];
+ this.password[i] = password[j];
// XXX this should use character encodings, other than ASCII.
bPassword[i] = (byte) (password[j] & 0x7F);
}
+/* AudioSecurityManager.java -- Manages Security requests for Sound classes.
+
+ Copyright (C) 2007 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 gnu.javax.sound;
import javax.sound.sampled.AudioPermission;
+/**
+ * This class handles security requests for classes in the Sound API.
+ *
+ * A class that needs to check against a particular permission type may use this
+ * class to query the <code>SecurityManager</code>.
+ *
+ * For example, to check for a read permission, a class can simply pass the
+ * <code>Permission.READ</code> constant to
+ * {@link #checkPermissions(gnu.javax.sound.AudioSecurityManager.Permission))},
+ * like the following code demonstrates:
+ *
+ * <pre>
+ * AudioSecurityManager.checkPermissions(Permission.PLAY);
+ * </pre>
+ *
+ * If there is need to query for all the defined permissions type, the constant
+ * <code>Permission.ALL</code> can be used. In alternative, the
+ * {@link #checkPermissions()} is presented as a shorthand.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
public class AudioSecurityManager
{
+ /**
+ * Defines a common set of permission allowed by the specification.
+ */
public static enum Permission
{
PLAY, RECORD, ALL
}
+ /**
+ * Shorthand to <code>checkPermissions(Permission.ALL)</code>.
+ */
public static final void checkPermissions()
{
checkPermissions(Permission.ALL);
}
+ /**
+ * Query the <code>SecurityManager</code> agains the given
+ * <code>Permission</code>.
+ *
+ * @param permission
+ */
public static final void checkPermissions(Permission permission)
{
SecurityManager sm = System.getSecurityManager();
import java.io.FilenameFilter;
import gnu.classpath.Configuration;
-import gnu.javax.sound.midi.alsa.AlsaMidiSequencerDevice;
-
import javax.sound.midi.MidiDevice;
import javax.sound.midi.MidiDevice.Info;
import javax.sound.midi.spi.MidiDeviceProvider;
package gnu.javax.sound.midi.file;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.io.OutputStream;
import javax.sound.midi.MetaMessage;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.InputStream;
-import java.io.DataInputStream;
import java.io.FileInputStream;
import java.net.URL;
import java.nio.ByteBuffer;
package gnu.javax.sound.sampled.gstreamer;
-import java.awt.AWTPermission;
-
import gnu.javax.sound.sampled.gstreamer.lines.GstSourceDataLine;
import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioPermission;
-import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Control;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.Line;
import javax.sound.sampled.Mixer;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.Control.Type;
-import javax.sound.sampled.Line.Info;
/**
* @author Mario Torre <neugens@limasoftware.net>
super(name, vendor, desc, vers);
}
}
-
+
public static final String GST_BACKEND = GstInfo.name;
public static final String GST_DECODER = "decoder";
-
- private static AudioFormat[] BASIC_FORMATS =
- {
- new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- true),
-
- new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- AudioSystem.NOT_SPECIFIED,
- false),
- };
+ public static final String GST_TYPE_NAME = "type";
+ public static final String GST_FILE_EXTENSION = "ext";
/** Mixer Info */
private static final Mixer.Info INFO = new GStreamerMixer.GstInfo();
-
+
public Line getLine(Line.Info info)
throws LineUnavailableException
{
package gnu.javax.sound.sampled.gstreamer.io;
+import gnu.javax.sound.sampled.gstreamer.GStreamerMixer;
+
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
-
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
*/
public class GstAudioFileReader
extends AudioFileReader
-{
+{
@Override
public AudioFileFormat getAudioFileFormat(File file)
throws UnsupportedAudioFileException, IOException
{
- throw new UnsupportedAudioFileException("Unsupported encoding.");
+ StringBuffer name = new StringBuffer(file.getName());
+ String _name = name.substring(name.lastIndexOf(".") + 1);
+
+ return getAudioFileFormat(
+ new BufferedInputStream(new FileInputStream(file)), _name);
}
@Override
public AudioFileFormat getAudioFileFormat(InputStream is)
throws UnsupportedAudioFileException, IOException
{
- throw new UnsupportedAudioFileException("Unsupported encoding.");
+ return getAudioFileFormat(is, null);
}
+ private AudioFileFormat getAudioFileFormat(InputStream is, String extension)
+ throws UnsupportedAudioFileException
+ {
+ AudioFormat format = null;
+ try
+ {
+ format = GstAudioFileReaderNativePeer.getAudioFormat(is);
+ }
+ catch (Exception e)
+ {
+ UnsupportedAudioFileException ex =
+ new UnsupportedAudioFileException("Unsupported encoding.");
+
+ ex.initCause(ex.getCause());
+ throw ex;
+ }
+
+ if (format == null)
+ throw new UnsupportedAudioFileException("Unsupported encoding.");
+
+ String name = format.getProperty(GStreamerMixer.GST_DECODER).toString();
+
+ if (extension == null)
+ {
+ extension =
+ format.getProperty(GStreamerMixer.GST_FILE_EXTENSION).toString();
+ }
+
+ AudioFileFormat.Type type =
+ new AudioFileFormat.Type(name, extension);
+
+ // TODO: we should calculate this in some way. We don't need it, but
+ // application may want to use this data.
+ return new AudioFileFormat(type, format, AudioSystem.NOT_SPECIFIED);
+ }
+
@Override
public AudioFileFormat getAudioFileFormat(URL url)
throws UnsupportedAudioFileException, IOException
}
catch (Exception e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ UnsupportedAudioFileException ex =
+ new UnsupportedAudioFileException("Unsupported encoding.");
+
+ ex.initCause(ex.getCause());
+ throw ex;
}
// get the header size
package gnu.javax.sound.sampled.gstreamer.io;
+import gnu.classpath.Pointer;
import gnu.javax.sound.sampled.gstreamer.GStreamerMixer;
import java.io.BufferedInputStream;
public String isSigned = null;
public String layer = null;
+
public String bitrate = null;
+
public String framed = null;
+
public String type = null;
}
public static AudioFormat getAudioFormat(InputStream is) throws Exception
{
- GstHeader header = new GstHeader();
-
- BufferedInputStream stream = new BufferedInputStream(is);
- if(!stream.markSupported())
- throw new IOException("Stream must support marking.");
-
- stream.mark(0);
-
- if (!gstreamer_get_audio_format_stream(header, stream))
- return null;
-
- return getAudioFormat(header);
+ return getAudioFormat(is, new GstHeader());
}
public static AudioFormat getAudioFormat(URL url) throws Exception
GstHeader header = new GstHeader();
header.file = url.toExternalForm();
- BufferedInputStream stream = new BufferedInputStream(url.openStream());
+ return getAudioFormat(url.openStream(), header);
+ }
+
+ private static AudioFormat getAudioFormat(InputStream is, GstHeader header)
+ throws Exception
+ {
+ BufferedInputStream stream = new BufferedInputStream(is);
if(!stream.markSupported())
throw new IOException("Stream must support marking.");
stream.mark(0);
- if (!gstreamer_get_audio_format_stream(header, stream))
+ if (!gstreamer_get_audio_format_stream(header, new GstInputStream(stream).
+ getNativeClass()))
return null;
return getAudioFormat(header);
bigEndian = true;
}
+ String ext = null;
+
int frameSize = na;
float frameRate = na;
String lowerCase = header.name.toLowerCase();
// FIXME: frameRate = sampleRate in these cases under all the tests so far
// but I'm not sure if this is always correct...
- if (lowerCase.contains("law") || lowerCase.contains("au") ||
- lowerCase.contains("x-au"))
+ if (lowerCase.contains("law") || lowerCase.contains("au"))
{
frameSize = (sampleSizeInBits >> 3) * channels;
frameRate = sampleRate;
+ ext = "au";
}
else if (lowerCase.contains("wav"))
{
frameSize = ((sampleSizeInBits + 7) / 8) * channels;
frameRate = sampleRate;
+ ext = "wav";
}
else if (lowerCase.contains("iff"))
{
frameSize = (sampleSizeInBits * channels) / 8;
frameRate = sampleRate;
+ ext = "aiff";
}
// write all the additional properties we got to identify
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(GStreamerMixer.GST_BACKEND, true);
properties.put(GStreamerMixer.GST_DECODER, header.name);
+ properties.put(GStreamerMixer.GST_TYPE_NAME, encoding.toString());
+ if (ext != null)
+ properties.put(GStreamerMixer.GST_FILE_EXTENSION, ext);
/* now we put in some of the additional properties if we have them */
if (header.type != null) properties.put("type", header.type);
/* ***** native methods ***** */
/**
- * Retrieve header information about the file being played.
- *
- * @param info
- * @return
+ * Retrieve header information about the stream being played.
*/
native static final
protected boolean gstreamer_get_audio_format_stream(GstHeader info,
- BufferedInputStream istream);
+ Pointer pointer);
/**
* Retrieve header information about the file being played.
- *
- * @param info
- * @return
*/
native static final
protected boolean gstreamer_get_audio_format_file(GstHeader info);
+ /**
+ * Initialize the native peer and enables the object cache.
+ * It is meant to be used by the static initializer.
+ */
+ native private static final void init_id_cache();
+
static
{
System.loadLibrary("gstreamerpeer"); //$NON-NLS-1$
+ init_id_cache();
}
}
--- /dev/null
+/* GstInputStream.java -- Trampoline class for an InputStream, mean to be used
+ by native code.
+ Copyright (C) 2007 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 gnu.javax.sound.sampled.gstreamer.io;
+
+import gnu.classpath.Pointer;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Encapsulates the functionality of an InputStream Object.
+ *
+ * This class is only meant to be used by the native code, to allow reading
+ * of the given InputStream as part of a the GStreamer InputStream Source
+ * Plugin.
+ *
+ * <strong>Note:</strong> this class will be not garbage collected as the
+ * native code contains strong references to internal fields.
+ * The native layer provides a method that can be called by the C code to
+ * free the resources and to let the garbage collected to handle this class
+ * when not needed anymore.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class GstInputStream
+{
+ /** The real InputStream on which to perform reading operations. */
+ private InputStream istream;
+
+ /**
+ * Initialized in the native code, don't change without changes
+ * in the native layer.
+ */
+ private Pointer gstInputStream = null;
+
+ public GstInputStream(InputStream istream)
+ {
+ this.istream = istream;
+ init_instance();
+ }
+
+ public int read(byte[] buf, int off, int len) throws IOException
+ {
+ return this.istream.read(buf, off, len);
+ }
+
+ public int available() throws IOException
+ {
+ return this.istream.available();
+ }
+
+ /**
+ * Return a reference to the GstInputStream native class as a Pointer object.
+ * This method is intended as an helper accessor and the returned pointer
+ * needs to be casted and used in the native code only.
+ *
+ * @return Pointer to the native GstInputStream class.
+ */
+ public Pointer getNativeClass()
+ {
+ return this.gstInputStream;
+ }
+
+ /* native methods */
+
+ /**
+ * Initialize the native peer and enables the object cache.
+ * It is meant to be used by the class constructor.
+ */
+ native private final void init_instance();
+
+ /**
+ * Initialize the native peer and enables the object cache.
+ * It is meant to be used by the static initializer.
+ */
+ native private static final void init_id_cache();
+
+ static
+ {
+ System.loadLibrary("gstreamerpeer"); //$NON-NLS-1$
+ init_id_cache();
+ }
+}
import javax.sound.sampled.Control;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineListener;
-import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Control.Type;
public abstract class GstDataLine
implements DataLine
{
- public static enum State
- {
- PLAY, PAUSE, STOP
- }
-
public static final int DEFAULT_BUFFER_SIZE = 1024;
- /** Represents the playing state of this Line. */
- protected State state = State.STOP;
-
/** Represents if this Line is opened or not. */
protected Boolean open = false;
// TODO Auto-generated method stub
return 0;
}
-
- public boolean isRunning()
- {
- return (state == State.PLAY || state == State.PAUSE);
- }
-
+
public void addLineListener(LineListener listener)
{
// TODO Auto-generated method stub
return false;
}
- public void open() throws LineUnavailableException
+ public void removeLineListener(LineListener listener)
{
// TODO Auto-generated method stub
}
- public void removeLineListener(LineListener listener)
+ /* protected methods for subclasses */
+
+ /**
+ * @param open the open to set
+ */
+ protected void setOpen(Boolean open)
{
- // TODO Auto-generated method stub
+ this.open = open;
+ }
+
+ /**
+ * @param bufferSize the bufferSize to set
+ */
+ protected void setBufferSize(int bufferSize)
+ {
+ this.bufferSize = bufferSize;
+ }
+ /**
+ * @param format the format to set
+ */
+ protected void setFormat(AudioFormat format)
+ {
+ this.format = format;
}
}
package gnu.javax.sound.sampled.gstreamer.lines;
+import gnu.classpath.Pointer;
+
+import javax.sound.sampled.LineUnavailableException;
+
public class GstNativeDataLine
-{
+{
+ public static final GstPipeline createSourcePipeline(int bufferSize)
+ throws LineUnavailableException
+ {
+ GstPipeline pipeline = new GstPipeline(bufferSize);
+
+ pipeline.createForWrite();
+
+ if (!setup_sink_pipeline(pipeline.getNativeClass()))
+ throw new LineUnavailableException("Line unavailable");
+
+ return pipeline;
+ }
+ /* native methods */
+ /**
+ * Initialize the native peer and enables the object cache.
+ * It is meant to be used by the static initializer.
+ */
+ native static final private void init_id_cache();
+
+ /**
+ * Setup a new GStreamer Pipeline
+ */
+ native static final private boolean setup_sink_pipeline(Pointer pipeline);
+
static
{
System.loadLibrary("gstreamerpeer"); //$NON-NLS-1$
+ init_id_cache();
}
}
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 gnu.javax.sound.sampled.gstreamer.lines;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.prefs.Preferences;
+
+import javax.sound.sampled.LineUnavailableException;
+
import gnu.classpath.Pointer;
/**
+ * This class represent a GStreamer pipeline and is resposible to handle the
+ * flow of data to and from the GStreamer native backend.
*
* @author Mario Torre <neugens@limasoftware.net>
*/
public class GstPipeline
{
+ /*
+ * Implementation note:
+ * This class is at first a bit confusing as it serves as a gateway
+ * to a real filesystem named pipe.
+ * The pipelines is shared by the gstreamer backend and by the java code.
+ * If the operation we are performing is to play a given stream of bytes,
+ * we need to open the java side of the pipeline for writing, which is done
+ * in the prepareWrite method. At the same time, the native side of the code
+ * need to open the pipeline in read mode, to get access to the data,
+ * and hence, act as a source element. This is why you will see terms
+ * like "read" or "source" in methods that are used to write in the pipeline,
+ * in other words, each the native operation is the opposite of the java
+ * side operation.
+ * Opening the pipe to record audio data from the sound card works the same
+ * except that all the operation are inverted.
+ */
+
+ // These enums are used in the native code also, changes here must reflect
+ // changes in the native code.
+ public static enum State
+ {
+ PLAY, PAUSE, STOP, CLOSE
+ }
+
+ private static final int READ = 0;
+ private static final int WRITE = 1;
+ private static final int QUEUED = 1;
+
+ private static final String CAPACITY_KEY = "Capacity";
+
+ private static final Object [] lock = new Object[0];
+
+ /*
+ * Preference subsystem. We use this to store some system specific settings.
+ */
+ protected Preferences prefs =
+ Preferences.userNodeForPackage(GstPipeline.class).node("GStreamer");
+
+ // used by the native code, stores the size of the named pipeline
+ // created by the operating system.
+ private long capacity = -1;
+
+ /** Represents the playing state of this Line. */
+ private State state = State.STOP;
+
+ /** The name of the named pipe. */
+ // Will be setup and filled in the native code. See the native library
+ // for details.
+ private String name = null;
+
+ /** This is the named pipe that will be read by the gstreamer backend. */
+ private FileOutputStream output = null;
+
+ /**
+ * Defines if we are getting data from a sink pipe
+ * or writing to a source pipe.
+ */
+ private boolean source = true;
+
+ /** Indicate that we are ready to process audio data to/from the pipe. */
+ private boolean ready = false;
+
/**
* This is the native GStreamer Pipeline.
+ */
+ // This field is used by the native code, so any change to it must be
+ // followed by similar changes in the native peer.
+ private Pointer pipeline = null;
+
+ /**
+ * Creates a new GstPipeline with a capacity of
+ * {@link GstDataLine#DEFAULT_BUFFER_SIZE}.
*
- * This field is used by the native code, so any change to it must be
- * followed by similar changes in the native peer.
+ * @see GstDataLine#DEFAULT_BUFFER_SIZE
+ */
+ public GstPipeline()
+ {
+ this(GstDataLine.DEFAULT_BUFFER_SIZE);
+ }
+
+ /**
+ * Creates a new GstPipeline with a capacity of bufferSize.
+ * @see GstDataLine#DEFAULT_BUFFER_SIZE
+ */
+ public GstPipeline(int bufferSize)
+ {
+ // see if we need to detect the size of the named pipe or we can use
+ // an already computet default for this system.
+ // Note that this is very different from the bufferSize parameter,
+ // see below.
+ capacity = prefs.getLong(CAPACITY_KEY, -1);
+ if (capacity == -1)
+ {
+ synchronized (lock)
+ {
+ capacity = detect_pipe_size();
+ }
+
+ prefs.putLong(CAPACITY_KEY, capacity);
+ }
+
+ // FIXME: bufferSize actually not used nor needed by the backend.
+ // Applications that expects a buffer of different size will be a
+ // bit disappointed by that..
+ init_instance();
+
+ // need to remove the named pipe in case of abnormal termination
+ Runtime.getRuntime().addShutdownHook(new CleanPipeline());
+ }
+
+ /**
+ * Creates a source pipeline. A source pipeline is a pipe you send data for
+ * processing using the write method.
+ */
+ public void createForWrite() throws LineUnavailableException
+ {
+ // create the named pipe
+ if (!create_named_pipe(this.pipeline))
+ throw new LineUnavailableException("Unable to create filesystem pipe");
+
+ open_native_pipe(this.pipeline, READ);
+ prepareWrite();
+
+ this.source = true;
+ }
+
+ /**
+ * @return the state
+ */
+ public State getState()
+ {
+ return this.state;
+ }
+
+ /**
+ * Closes this pipeline.
+ * Short hand for #setState(State.STOP).
+ */
+ public void close()
+ {
+ setState(State.STOP);
+ }
+
+ /**
+ * @param state the state to set
*/
- private Pointer pipeline;
+ public void setState(final State state)
+ {
+ int _state = -1;
+ switch (state)
+ {
+ case PLAY:
+ _state = 0;
+ break;
+
+ case PAUSE:
+ _state = 1;
+ break;
+
+ case STOP: case CLOSE:
+ _state = 2;
+ closePipe();
+ break;
+ }
- native private void setState();
+ if (set_state(pipeline, _state))
+ GstPipeline.this.state = state;
+ }
+
+ /**
+ * Return a reference to the GstPipeline native class as a Pointer object.
+ * This method is intended as an helper accessor and the returned pointer
+ * needs to be casted and used in the native code only.
+ *
+ * @return Pointer to the native GstPipeline class.
+ */
+ public Pointer getNativeClass()
+ {
+ return this.pipeline;
+ }
+
+ /**
+ * Write length bytes from the given buffer into this pipeline,
+ * starting at offset.
+ * This method block if the pipeline can't accept more data.
+ *
+ * @param buffer
+ * @param offset
+ * @param length
+ * @return
+ */
+ public int write(byte[] buffer, int offset, int length)
+ {
+ if (this.state == State.STOP)
+ return -1;
+ else if (this.state == State.PAUSE)
+ return 0;
+ else if (!ready)
+ return -1;
+
+ try
+ {
+ if (output != null)
+ {
+ output.write(buffer, offset, length);
+ return length;
+ }
+ return 0;
+ }
+ catch (Exception e)
+ {
+ /* nothing to do */
+ }
+
+ return -1;
+ }
+
+ public int read(byte[] buffer, int offset, int length)
+ {
+ return 0;
+ }
+
+ public int available()
+ {
+ if (this.source)
+ return available(this.pipeline, READ);
+ else
+ return available(this.pipeline, WRITE);
+ }
+
+ /**
+ * Wait for remaining data to be enqueued in the pipeline.
+ */
+ public void drain()
+ {
+ if (this.state == State.STOP)
+ return;
+
+ try
+ {
+ // wait untill there is anymore data in the pipe
+ while (available(this.pipeline, QUEUED) > 0)
+ Thread.sleep(3000);
+
+ // plus a bit to allow data to be processed
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException e)
+ {
+ /* nothing to do*/
+ }
+ }
+
+ /**
+ * Flush all the data currently waiting to be processed.
+ */
+ public void flush()
+ {
+ try
+ {
+ if (source)
+ this.output.flush();
+ }
+ catch (IOException e)
+ {
+ /* nothing */
+ }
+ }
+
+ private void closePipe()
+ {
+ try
+ {
+ GstPipeline.this.flush();
+ if (source)
+ GstPipeline.this.output.close();
+ }
+ catch (IOException e)
+ {
+ /* nothing to do */
+ }
+ }
+
+ private void prepareWrite()
+ {
+ try
+ {
+ // if this is not completed for some reason, we will catch
+ // in the write method. As this call can block, we assume we will
+ // succeed and that the dataline can get data.
+ GstPipeline.this.ready = true;
+ GstPipeline.this.output = new FileOutputStream(name);
+ }
+ catch (Exception e)
+ {
+ GstPipeline.this.ready = false;
+ }
+ }
+
+ /* ***** native ***** */
+
+ /**
+ * Initialize the native peer and enables the object cache.
+ * It is meant to be used by the static initializer.
+ */
+ native private static final void init_id_cache();
+
+ /**
+ * Set the playing state of this pipeline.
+ */
+ native private static final boolean set_state(Pointer pipeline, int state);
+
+ /**
+ * Get the number of bytes currently available for reading or writing
+ * from the pipeline.
+ */
+ native private static final int available(Pointer pipeline, int mode);
+
+ /**
+ * Open the native pipeline with the given mode.
+ */
+ native private static final void open_native_pipe(Pointer jpipeline,
+ int mode);
+
+ /**
+ * Close the native pipeline.
+ */
+ native private static final void close_native_pipe(Pointer jpipeline);
+
+ /**
+ * Initialize the native peer and enables the object cache.
+ * It is meant to be used by the class constructor.
+ */
+ native private final void init_instance();
+
+ /**
+ * Crates the named pipe used to pass data between the application code
+ * and gstreamer.
+ */
+ native private final boolean create_named_pipe(Pointer jpipeline);
+
+ /**
+ * Detect and return the size of the filesystem named pipe.
+ */
+ native private final long detect_pipe_size();
+
+ private class CleanPipeline extends Thread
+ {
+ public void run()
+ {
+ GstPipeline.close_native_pipe(GstPipeline.this.pipeline);
+ }
+ }
+ static
+ {
+ System.loadLibrary("gstreamerpeer"); //$NON-NLS-1$
+ init_id_cache();
+ }
}
package gnu.javax.sound.sampled.gstreamer.lines;
import gnu.javax.sound.AudioSecurityManager;
+import gnu.javax.sound.sampled.gstreamer.lines.GstPipeline.State;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.LineUnavailableException;
public class GstSourceDataLine
extends GstDataLine implements SourceDataLine
{
+ private GstPipeline pipeline = null;
+ private boolean open = false;
+
public GstSourceDataLine(AudioFormat format)
{
super(format);
}
+ public void open() throws LineUnavailableException
+ {
+ AudioSecurityManager.checkPermissions(Permission.PLAY);
+
+ if (open)
+ throw new IllegalStateException("Line already opened");
+
+ // create the pipeline
+ pipeline = GstNativeDataLine.createSourcePipeline(getBufferSize());
+
+ this.open = true;
+ }
+
public void open(AudioFormat fmt) throws LineUnavailableException
{
AudioSecurityManager.checkPermissions(Permission.PLAY);
- throw new LineUnavailableException("Line unavailable");
+
+ setFormat(fmt);
+ this.open();
}
public void open(AudioFormat fmt, int size) throws LineUnavailableException
{
AudioSecurityManager.checkPermissions(Permission.PLAY);
- throw new LineUnavailableException("Line unavailable");
+
+ setBufferSize(size);
+ this.open(fmt);
}
public int write(byte[] buf, int offset, int length)
- {
- // TODO Auto-generated method stub
- return 0;
+ {
+ return this.pipeline.write(buf, offset, length);
}
public int available()
{
- // TODO Auto-generated method stub
- return 0;
+ return this.pipeline.available();
}
public void drain()
{
- // TODO Auto-generated method stub
-
+ this.pipeline.drain();
}
public void flush()
{
- // TODO Auto-generated method stub
-
+ this.pipeline.flush();
}
public int getFramePosition()
{
- // TODO Auto-generated method stub
+ System.out.println("getFramePosition -: IMPLEMENT ME!!");
return 0;
}
public long getLongFramePosition()
{
- // TODO Auto-generated method stub
+ System.out.println("getLongFramePosition -: IMPLEMENT ME!!");
return 0;
}
public long getMicrosecondPosition()
{
- // TODO Auto-generated method stub
+ System.out.println("getMicrosecondPosition -: IMPLEMENT ME!!");
return 0;
}
public boolean isActive()
{
- // TODO Auto-generated method stub
- return false;
+ State state = pipeline.getState();
+ return (state == State.PLAY || state == State.PAUSE);
}
public void start()
{
- // TODO Auto-generated method stub
-
+ pipeline.setState(State.PLAY);
}
public void stop()
{
- // TODO Auto-generated method stub
-
+ pipeline.setState(State.PAUSE);
}
public void close()
{
- // TODO Auto-generated method stub
-
+ pipeline.close();
+ this.open = false;
+ }
+
+ public boolean isRunning()
+ {
+ return (pipeline.getState() == State.PLAY);
}
-
}
{
int end = value.indexOf("pt");
String number = value.substring(0, end);
- int intVal = Integer.parseInt(number);
+ int intVal = (int) Double.parseDouble(number);
return intVal;
}
String number = value.substring(0, end);
try
{
- int intVal = Integer.parseInt(number);
+ int intVal = (int) Double.parseDouble(number);
return intVal;
}
catch (NumberFormatException ex)
String number = value.substring(0, end);
try
{
- int intVal = Integer.parseInt(number);
+ int intVal = (int) Double.parseDouble(number);
return intVal * par / 100;
}
catch (NumberFormatException ex)
* instance, the html tag).
*
* @param tags
- * @param classes
- * @param ids
*
* @return <code>true</code> when this selector matches the element path,
* <code>false</code> otherwise
/**
* Do the match operation with the given token. This sets various
* flags.
- * @param token The token to match.
+ * @param a_token The token to match.
* @return true if the the token matches node, false if it does not match
* or if the node is closed.
*/
* The tag validator closes all unclosed elements that are required
* to have the end (closing) tag.
*
- * @param element The tag being fictionally (forcibly) closed.
+ * @param tElement The tag being fictionally (forcibly) closed.
*/
protected void handleSupposedEndTag(Element tElement)
{
* assigned to the empty one, the previous value is
* restored before return.
*
- * @param element The tag being fictionally (forcibly) closed.
+ * @param tElement The tag being fictionally (forcibly) closed.
*/
protected void handleSupposedStartTag(Element tElement)
{
restOfTag(false, name, start);
buffer.setLength(0);
-
- script:
+
while (!SCRIPT_CLOSE.matches(this))
{
append(getNextToken());
restOfTag(false, name, start);
buffer.setLength(0);
-
- style:
+
while (!STYLE_CLOSE.matches(this))
{
append(getNextToken());
* Handle the tag with no content, like <br>. The method is
* called for the elements that, in accordance with the current DTD,
* has an empty content.
- * @param The tag being handled.
+ * @param tag The tag being handled.
* @throws javax.swing.text.ChangedCharSetException
*/
protected void handleEmptyTag(TagElement tag)
* The method is called when the HTML closing tag ((like </table>)
* is found or if the parser concludes that the one should be present
* in the current position.
- * @param The tag
+ * @param tag The tag
*/
protected void handleEndTag(TagElement tag)
{
* The method is called when the HTML opening tag ((like <table>)
* is found or if the parser concludes that the one should be present
* in the current position.
- * @param The tag
+ * @param tag The tag
*/
protected void handleStartTag(TagElement tag)
{
* both title starting and closing tags are already behind.
* The passed argument contains the concatenation of all
* title text sections.
- * @param The title text.
+ * @param title The title text.
*/
protected void handleTitle(char[] title)
{
{
Object value = HTML.NULL_ATTRIBUTE_VALUE;
- Element e = (Element) dtd.elementHash.get(element.toLowerCase());
+ Element e = dtd.elementHash.get(element.toLowerCase());
if (e != null)
{
AttributeList attr = e.getAttribute(attribute);
* is found or if the parser concludes that the one should be present
* in the current position. The method is called immediately before
* calling the handleStartTag.
- * @param The tag
+ * @param tag The tag
*/
protected void startTag(TagElement tag)
throws ChangedCharSetException
* A hooks for operations, preceeding call to handleEmptyTag().
* Handle the tag with no content, like <br>. As no any
* nested tags are expected, the tag validator is not involved.
- * @param The tag being handled.
+ * @param tag The tag being handled.
*/
private void _handleEmptyTag(TagElement tag)
{
* A hooks for operations, preceeding call to handleEndTag().
* The method is called when the HTML closing tag
* is found. Calls handleTitle after closing the 'title' tag.
- * @param The tag
+ * @param tag The tag
*/
private void _handleEndTag(TagElement tag)
{
* The method is called when the HTML opening tag ((like <table>)
* is found.
* Package-private to avoid an accessor method.
- * @param The tag
+ * @param tag The tag
*/
void _handleStartTag(TagElement tag)
{
private TagElement makeTagElement(String name, boolean isSupposed)
{
- Element e = (Element) dtd.elementHash.get(name.toLowerCase());
+ Element e = dtd.elementHash.get(name.toLowerCase());
if (e == null)
{
error("Unknown tag <" + name + ">");
/**
* Read the given number of the tokens. Add the needed number of EOF
* tokens if there are no more data in the stream.
- * @param amount The number of additional tokens to read.
+ * @param numberOfTokens The number of additional tokens to read.
*/
void read(int numberOfTokens)
throws IOException
{
if (numberOfTokens <= 0)
return;
-
- reading:
+
for (int i = 0; i < numberOfTokens; i++)
readToken();
}
if (atts == null)
{
htmlAttributeSet set = new htmlAttributeSet();
- Element e = (Element) dtd.elementHash.get(element.toLowerCase());
+ Element e = dtd.elementHash.get(element.toLowerCase());
if (e != null)
{
* \r or \r\n mutate into \n. Tabs are
* preserved.
* The content of the passed buffer is destroyed.
- * @param text
+ * @param a_text
* @return
*/
public char[] preprocessPreformatted(StringBuffer a_text)
private void error(String message, char textFound, String textExpected)
throws SAXException
{
- error(message, new Character(textFound).toString(), textExpected);
+ error(message, Character.toString(textFound), textExpected);
}
/**
{
// too big for surrogate
error("character reference " + value + " is too large for UTF-16",
- new Integer(value).toString(), null);
+ Integer.toString(value), null);
}
}
{
// too big for surrogate
error("character reference " + value + " is too large for UTF-16",
- new Integer(value).toString(), null);
+ Integer.toString(value), null);
}
if (doFlush)
{
nameBufferPos = 0;
// Read the first character.
-loop:
while (true)
{
c = readCh();
catch (EOFException e)
{
error("end of input while looking for delimiter (started on line "
- + startLine + ')', null, new Character(delim).toString());
+ + startLine + ')', null, Character.toString(delim));
}
inLiteral = false;
expandPE = saved;
if (c != delim)
{
- error("required character", c, new Character(delim).toString());
+ error("required character", c, Character.toString(delim));
}
}
}
else
{
- pushString(null, new Character(c).toString());
+ pushString(null, Character.toString(c));
}
}
package gnu.xml.dom.html2;
-import org.w3c.dom.Node;
import org.w3c.dom.html2.HTMLButtonElement;
import org.w3c.dom.html2.HTMLFormElement;
package gnu.xml.dom.html2;
import gnu.xml.dom.DomDOMException;
-import gnu.xml.dom.DomElement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
package gnu.xml.dom.html2;
-import gnu.javax.swing.text.html.parser.support.Parser;
-
import java.io.IOException;
import java.io.Reader;
case STRING_TYPE:
return getStringValue ();
case NUMBER_TYPE:
- return new Double (getNumberValue ()).toString ();
+ return Double.toString (getNumberValue ());
case BOOLEAN_TYPE:
return Boolean.valueOf (getBooleanValue ()).toString ();
case UNORDERED_NODE_SNAPSHOT_TYPE:
// ELSE ... search up the tree we've been building
for (Node n = top;
n != null && n.getNodeType () != Node.DOCUMENT_NODE;
- n = (Node) n.getParentNode ()) {
+ n = n.getParentNode ()) {
if (n.getNodeType () == Node.ENTITY_REFERENCE_NODE)
continue;
Element e = (Element) n;
Method m = null;
try {
- m = Thread.class.getMethod("getContextClassLoader", null);
+ m = Thread.class.getMethod("getContextClassLoader");
} catch (NoSuchMethodException e) {
// Assume that we are running JDK 1.1, use the current ClassLoader
return EventFilter.class.getClassLoader();
}
try {
- return (ClassLoader) m.invoke(Thread.currentThread(), null);
+ return (ClassLoader) m.invoke(Thread.currentThread());
} catch (IllegalAccessException e) {
// assert(false)
throw new UnknownError(e.getMessage());
protected final QName name;
protected final String value;
- protected final QName type;
+ protected final String type;
protected final boolean specified;
protected AttributeImpl(Location location,
- QName name, String value, QName type,
+ QName name, String value, String type,
boolean specified)
{
super(location);
return value;
}
- public QName getDTDType()
+ public String getDTDType()
{
return type;
}
package gnu.xml.stream;
-import java.io.IOException;
import java.io.Writer;
import javax.xml.stream.Location;
import javax.xml.stream.XMLStreamException;
import org.xml.sax.XMLReader;
import org.xml.sax.ext.Attributes2;
import org.xml.sax.ext.DeclHandler;
-import org.xml.sax.ext.EntityResolver2;
import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.ext.Locator2;
return baseAware ? Boolean.TRUE : Boolean.FALSE;
if ((GNU_PROPERTIES + "document-xml-encoding").equals(name))
return xmlEncoding;
- throw new SAXNotSupportedException(name);
+ throw new SAXNotRecognizedException(name);
}
public boolean isXIncludeAware()
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
return event;
case XPathResult.NUMBER_TYPE:
double nval = result.getNumberValue();
- String ntext = new Double(nval).toString();
+ String ntext = Double.toString(nval);
buf = ntext.toCharArray();
len = buf.length;
result = null;
attributes.add(new AttributeImpl(location,
reader.getAttributeName(i),
reader.getAttributeValue(i),
- QName.valueOf(reader.getAttributeType(i)),
+ reader.getAttributeType(i),
reader.isAttributeSpecified(i)));
return new StartElementImpl(location,
reader.getName(),
{
return new AttributeImpl(location,
new QName(namespaceURI, localName, prefix),
- value, QName.valueOf("CDATA"), true);
+ value, "CDATA", true);
}
public Attribute createAttribute(String localName, String value)
{
return new AttributeImpl(location,
new QName(localName),
- value, QName.valueOf("CDATA"), true);
+ value, "CDATA", true);
}
public Attribute createAttribute(QName name, String value)
{
return new AttributeImpl(location, name, value,
- QName.valueOf("CDATA"), true);
+ "CDATA", true);
}
public Namespace createNamespace(String namespaceURI)
import java.io.Writer;
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
*/
private int event;
- /**
- * Whether we are looking ahead. Used by hasNext.
- */
- private boolean lookahead;
-
/**
* The element name stack. The first element in this stack will be the
* root element.
public boolean hasNext()
throws XMLStreamException
{
- if (event == XMLStreamConstants.END_DOCUMENT)
- return false;
- if (!lookahead)
- {
- next();
- lookahead = true;
- }
- return event != -1;
+ return (event != XMLStreamConstants.END_DOCUMENT && event != -1);
}
public int next()
throws XMLStreamException
{
- if (lookahead)
- {
- lookahead = false;
- return event;
- }
if (event == XMLStreamConstants.END_ELEMENT)
{
// Pop namespace context
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
-import java.util.TreeSet;
import javax.xml.XMLConstants;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
* Constructs a resolver which understands how to map PUBLIC identifiers
* to other URIs, typically for local copies of standard DTD components.
*
- * @param dictionary maps PUBLIC identifiers to URIs. This is not
+ * @param dict maps PUBLIC identifiers to URIs. This is not
* copied; subsequent modifications will be reported through the
* resolution operations.
*/
package gnu.xml.validation.datatype;
-import java.util.Collections;
-import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.relaxng.datatype.DatatypeException;
package gnu.xml.validation.datatype;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.XMLConstants;
package gnu.xml.validation.datatype;
import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.relaxng.datatype.DatatypeException;
package gnu.xml.validation.datatype;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.XMLConstants;
package gnu.xml.validation.datatype;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.XMLConstants;
package gnu.xml.validation.datatype;
-import java.util.Collections;
-import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.relaxng.datatype.DatatypeException;
package gnu.xml.validation.datatype;
-import java.util.Collections;
-import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.relaxng.datatype.DatatypeException;
import java.util.Iterator;
import java.util.Set;
import java.util.regex.Matcher;
-import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.relaxng.datatype.Datatype;
import org.relaxng.datatype.DatatypeException;
package gnu.xml.validation.datatype;
-import java.util.Collections;
-import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
-import org.relaxng.datatype.DatatypeException;
-import org.relaxng.datatype.ValidationContext;
/**
* The XML Schema string type.
package gnu.xml.validation.datatype;
-import java.util.HashMap;
-import java.util.Map;
import javax.xml.namespace.QName;
/**
* Abstract base class for XML Schema datatypes.
import java.util.LinkedHashSet;
import java.util.regex.Pattern;
-import javax.xml.namespace.QName;
import org.relaxng.datatype.Datatype;
import org.relaxng.datatype.DatatypeBuilder;
import org.relaxng.datatype.DatatypeException;
import java.util.Map;
import java.util.Set;
import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
package gnu.xml.validation.xmlschema;
-import org.w3c.dom.TypeInfo;
import gnu.xml.validation.datatype.SimpleType;
/**
package gnu.xml.validation.xmlschema;
import java.util.LinkedHashSet;
-import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import javax.xml.XMLConstants;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import gnu.xml.validation.datatype.Annotation;
-import gnu.xml.validation.datatype.AtomicSimpleType;
-import gnu.xml.validation.datatype.ListSimpleType;
import gnu.xml.validation.datatype.SimpleType;
import gnu.xml.validation.datatype.Type;
-import gnu.xml.validation.datatype.UnionSimpleType;
/**
* Parses an XML Schema DOM tree, constructing a compiled internal
package gnu.xml.validation.xmlschema;
-import org.w3c.dom.TypeInfo;
import gnu.xml.validation.datatype.SimpleType;
import gnu.xml.validation.datatype.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
import javax.xml.xpath.XPathFunctionResolver;
## GCJ LOCAL: headers are installed specially.
##include_HEADERS = jni.h jni_md.h jawt.h jawt_md.h
+if CREATE_JNI_HEADERS
+DISTCLEANFILES = jni_md.h config-int.h $(H_FILES)
+else
DISTCLEANFILES = jni_md.h config-int.h
+endif
ARG_JNI_JAVAH = -jni
ARG_CLASSPATH_JAVAH = -bootclasspath
-JAVAH = $(USER_JAVAH) $(ARG_JNI_JAVAH) $(ARG_CLASSPATH_JAVAH) ../lib:$(USER_CLASSLIB)
+JAVAH = $(USER_JAVAH) $(ARG_JNI_JAVAH) $(ARG_CLASSPATH_JAVAH) ../lib:$(PATH_TO_GLIBJ_ZIP)
CLASSDIR = lib
SOUND_H_FILES = \
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h
+gnu_javax_sound_midi_alsa_AlsaPortDevice.h \
+gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h \
+gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h \
+gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h \
+gnu_javax_sound_midi_dssi_DSSISynthesizer.h
GST_PEER_H_FILES = \
-$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
+gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h \
+gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h \
+gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h \
+gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h
XMLJ_H_FILES = \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathResult.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeElement.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeEntity.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNode.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeAttr.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeLocator.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeXMLReader.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformer.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h
+gnu_xml_libxmlj_dom_GnomeDocument.h \
+gnu_xml_libxmlj_dom_GnomeXPathNodeList.h \
+gnu_xml_libxmlj_dom_GnomeDocumentType.h \
+gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h \
+gnu_xml_libxmlj_dom_GnomeTypeInfo.h \
+gnu_xml_libxmlj_dom_GnomeNodeList.h \
+gnu_xml_libxmlj_dom_GnomeNotation.h \
+gnu_xml_libxmlj_dom_GnomeXPathResult.h \
+gnu_xml_libxmlj_dom_GnomeElement.h \
+gnu_xml_libxmlj_dom_GnomeEntity.h \
+gnu_xml_libxmlj_dom_GnomeNode.h \
+gnu_xml_libxmlj_dom_GnomeXPathExpression.h \
+gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h \
+gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h \
+gnu_xml_libxmlj_dom_GnomeAttr.h \
+gnu_xml_libxmlj_sax_GnomeLocator.h \
+gnu_xml_libxmlj_sax_GnomeXMLReader.h \
+gnu_xml_libxmlj_transform_GnomeTransformer.h \
+gnu_xml_libxmlj_transform_GnomeTransformerFactory.h
GTKPEER_H_FILES = \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoSurface.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphics.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkRobotPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkChoicePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkClipboard.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFramePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkImage.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkListPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkSelection.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h \
-$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
+gnu_java_awt_peer_gtk_CairoSurface.h \
+gnu_java_awt_peer_gtk_CairoGraphics2D.h \
+gnu_java_awt_peer_gtk_ComponentGraphics.h \
+gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h \
+gnu_java_awt_peer_gtk_FreetypeGlyphVector.h \
+gnu_java_awt_peer_gtk_GdkFontPeer.h \
+gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h \
+gnu_java_awt_peer_gtk_GdkPixbufDecoder.h \
+gnu_java_awt_peer_gtk_GdkRobotPeer.h \
+gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h \
+gnu_java_awt_peer_gtk_GtkButtonPeer.h \
+gnu_java_awt_peer_gtk_GtkCanvasPeer.h \
+gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h \
+gnu_java_awt_peer_gtk_GtkCheckboxPeer.h \
+gnu_java_awt_peer_gtk_GtkChoicePeer.h \
+gnu_java_awt_peer_gtk_GtkClipboard.h \
+gnu_java_awt_peer_gtk_GtkComponentPeer.h \
+gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h \
+gnu_java_awt_peer_gtk_GtkFileDialogPeer.h \
+gnu_java_awt_peer_gtk_GtkFramePeer.h \
+gnu_java_awt_peer_gtk_GtkGenericPeer.h \
+gnu_java_awt_peer_gtk_GtkImage.h \
+gnu_java_awt_peer_gtk_GtkLabelPeer.h \
+gnu_java_awt_peer_gtk_GtkListPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuBarPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuItemPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuPeer.h \
+gnu_java_awt_peer_gtk_GtkPanelPeer.h \
+gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h \
+gnu_java_awt_peer_gtk_GtkScrollPanePeer.h \
+gnu_java_awt_peer_gtk_GtkScrollbarPeer.h \
+gnu_java_awt_peer_gtk_GtkSelection.h \
+gnu_java_awt_peer_gtk_GtkTextAreaPeer.h \
+gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
+gnu_java_awt_peer_gtk_GtkToolkit.h \
+gnu_java_awt_peer_gtk_GtkWindowPeer.h \
+gnu_java_awt_peer_gtk_GtkVolatileImage.h \
+gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
QTPEER_H_FILES = \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtToolkit.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtAudioClip.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScreenDevice.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuItemPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtButtonPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtWindowPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtImage.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuBarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtVolatileImage.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtChoicePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphics.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QPen.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFramePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtListPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h
+gnu_java_awt_peer_qt_QtCheckboxPeer.h \
+gnu_java_awt_peer_qt_QtToolkit.h \
+gnu_java_awt_peer_qt_QtAudioClip.h \
+gnu_java_awt_peer_qt_QtScreenDevice.h \
+gnu_java_awt_peer_qt_QtTextFieldPeer.h \
+gnu_java_awt_peer_qt_QtMenuItemPeer.h \
+gnu_java_awt_peer_qt_QtButtonPeer.h \
+gnu_java_awt_peer_qt_QtWindowPeer.h \
+gnu_java_awt_peer_qt_QtDialogPeer.h \
+gnu_java_awt_peer_qt_QtImage.h \
+gnu_java_awt_peer_qt_QtMenuBarPeer.h \
+gnu_java_awt_peer_qt_QtVolatileImage.h \
+gnu_java_awt_peer_qt_QtFontPeer.h \
+gnu_java_awt_peer_qt_QtChoicePeer.h \
+gnu_java_awt_peer_qt_QtGraphics.h \
+gnu_java_awt_peer_qt_QtComponentPeer.h \
+gnu_java_awt_peer_qt_QtMenuPeer.h \
+gnu_java_awt_peer_qt_QtTextAreaPeer.h \
+gnu_java_awt_peer_qt_QPen.h \
+gnu_java_awt_peer_qt_QtPanelPeer.h \
+gnu_java_awt_peer_qt_QPainterPath.h \
+gnu_java_awt_peer_qt_QtFontMetrics.h \
+gnu_java_awt_peer_qt_QtScrollPanePeer.h \
+gnu_java_awt_peer_qt_QMatrix.h \
+gnu_java_awt_peer_qt_QtLabelPeer.h \
+gnu_java_awt_peer_qt_QtPopupMenuPeer.h \
+gnu_java_awt_peer_qt_QtFramePeer.h \
+gnu_java_awt_peer_qt_QtListPeer.h \
+gnu_java_awt_peer_qt_QtScrollbarPeer.h \
+gnu_java_awt_peer_qt_QtCanvasPeer.h \
+gnu_java_awt_peer_qt_QtMenuComponentPeer.h \
+gnu_java_awt_peer_qt_MainQtThread.h \
+gnu_java_awt_peer_qt_QtFileDialogPeer.h \
+gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h
GCONF_PREFS_FILES = \
-$(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h
+gnu_java_util_prefs_gconf_GConfNativePeer.h
H_FILES = \
$(SOUND_H_FILES) \
$(GTKPEER_H_FILES) \
$(QTPEER_H_FILES) \
$(GCONF_PREFS_FILES) \
-$(top_srcdir)/include/gnu_java_net_VMPlainSocketImpl.h \
-$(top_srcdir)/include/gnu_java_net_local_LocalSocketImpl.h \
-$(top_srcdir)/include/gnu_java_nio_EpollSelectorImpl.h \
-$(top_srcdir)/include/gnu_java_nio_FileChannelImpl.h \
-$(top_srcdir)/include/gnu_java_nio_KqueueSelectorImpl.h \
-$(top_srcdir)/include/gnu_java_nio_VMChannel.h \
-$(top_srcdir)/include/gnu_java_nio_VMPipe.h \
-$(top_srcdir)/include/gnu_java_nio_VMSelector.h \
-$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvEncoder.h \
-$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvDecoder.h \
-$(top_srcdir)/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h \
-$(top_srcdir)/include/java_io_VMFile.h \
-$(top_srcdir)/include/java_io_VMObjectInputStream.h \
-$(top_srcdir)/include/java_io_VMObjectStreamClass.h \
-$(top_srcdir)/include/java_lang_VMDouble.h \
-$(top_srcdir)/include/java_lang_VMFloat.h \
-$(top_srcdir)/include/java_lang_VMMath.h \
-$(top_srcdir)/include/java_lang_VMProcess.h \
-$(top_srcdir)/include/java_lang_VMSystem.h \
-$(top_srcdir)/include/java_lang_reflect_VMArray.h \
-$(top_srcdir)/include/java_net_VMInetAddress.h \
-$(top_srcdir)/include/java_net_VMNetworkInterface.h \
-$(top_srcdir)/include/java_net_VMURLConnection.h \
-$(top_srcdir)/include/java_nio_VMDirectByteBuffer.h \
-$(top_srcdir)/include/java_nio_MappedByteBufferImpl.h \
-$(top_srcdir)/include/java_util_VMTimeZone.h
+gnu_java_net_VMPlainSocketImpl.h \
+gnu_java_net_local_LocalSocketImpl.h \
+gnu_java_nio_EpollSelectorImpl.h \
+gnu_java_nio_FileChannelImpl.h \
+gnu_java_nio_KqueueSelectorImpl.h \
+gnu_java_nio_VMChannel.h \
+gnu_java_nio_VMPipe.h \
+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_VMFile.h \
+java_io_VMObjectInputStream.h \
+java_io_VMObjectStreamClass.h \
+java_lang_VMDouble.h \
+java_lang_VMFloat.h \
+java_lang_VMMath.h \
+java_lang_VMProcess.h \
+java_lang_VMSystem.h \
+java_lang_reflect_VMArray.h \
+java_net_VMInetAddress.h \
+java_net_VMNetworkInterface.h \
+java_net_VMURLConnection.h \
+java_nio_VMDirectByteBuffer.h \
+java_nio_MappedByteBufferImpl.h \
+java_util_VMTimeZone.h
if CREATE_JNI_HEADERS
+EXTRA_DIST=$(H_FILES)
+
all-local: $(H_FILES)
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocument.java
+gnu_xml_libxmlj_dom_GnomeDocument.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocument.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocument
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java
+gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathNodeList
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentType.java
+gnu_xml_libxmlj_dom_GnomeDocumentType.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentType.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentType
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java
+gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeProcessingInstruction
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeTypeInfo.java
+gnu_xml_libxmlj_dom_GnomeTypeInfo.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeTypeInfo.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeTypeInfo
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNodeList.java
+gnu_xml_libxmlj_dom_GnomeNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNodeList.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNodeList
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNotation.java
+gnu_xml_libxmlj_dom_GnomeNotation.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNotation.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNotation
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathResult.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathResult.java
+gnu_xml_libxmlj_dom_GnomeXPathResult.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathResult.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathResult
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeElement.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeElement.java
+gnu_xml_libxmlj_dom_GnomeElement.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeElement.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeElement
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeEntity.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeEntity.java
+gnu_xml_libxmlj_dom_GnomeEntity.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeEntity.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeEntity
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNode.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNode.java
+gnu_xml_libxmlj_dom_GnomeNode.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNode.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNode
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathExpression.java
+gnu_xml_libxmlj_dom_GnomeXPathExpression.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathExpression.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathExpression
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java
+gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNamedNodeMap
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java
+gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentBuilder
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeAttr.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeAttr.java
+gnu_xml_libxmlj_dom_GnomeAttr.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeAttr.java
$(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeAttr
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeLocator.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeLocator.java
+gnu_xml_libxmlj_sax_GnomeLocator.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeLocator.java
$(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeLocator
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeXMLReader.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeXMLReader.java
+gnu_xml_libxmlj_sax_GnomeXMLReader.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeXMLReader.java
$(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeXMLReader
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformer.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformer.java
+gnu_xml_libxmlj_transform_GnomeTransformer.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformer.java
$(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformer
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java
+gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java
$(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformerFactory
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoSurface.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoSurface.java
+gnu_java_awt_peer_gtk_CairoSurface.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoSurface.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoSurface
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoGraphics2D.java
+gnu_java_awt_peer_gtk_CairoGraphics2D.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoGraphics2D.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoGraphics2D
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphics.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphics.java
+gnu_java_awt_peer_gtk_ComponentGraphics.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphics.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphics
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java
+gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphicsCopy
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: $(top_srcdir)/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: $(top_srcdir)/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.FreetypeGlyphVector
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontPeer.java
+gnu_java_awt_peer_gtk_GdkFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkFontPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphicsEnvironment
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkPixbufDecoder
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkRobotPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkRobotPeer.java
+gnu_java_awt_peer_gtk_GdkRobotPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkRobotPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkRobotPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
+gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkScreenGraphicsDevice
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
+gnu_java_awt_peer_gtk_GtkButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkButtonPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCanvasPeer.java
+gnu_java_awt_peer_gtk_GtkCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCanvasPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCanvasPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java
+gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
+gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkChoicePeer.java
+gnu_java_awt_peer_gtk_GtkChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkChoicePeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkChoicePeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkClipboard.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkClipboard.java
+gnu_java_awt_peer_gtk_GtkClipboard.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkClipboard.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkClipboard
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+gnu_java_awt_peer_gtk_GtkComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkComponentPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkComponentPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java
+gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkEmbeddedWindowPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFileDialogPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFramePeer.java
+gnu_java_awt_peer_gtk_GtkFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFramePeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFramePeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkGenericPeer.java
+gnu_java_awt_peer_gtk_GtkGenericPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkGenericPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkGenericPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkImage.java
+gnu_java_awt_peer_gtk_GtkImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkImage.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkImage
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkLabelPeer.java
+gnu_java_awt_peer_gtk_GtkLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkLabelPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkLabelPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkListPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkListPeer.java
+gnu_java_awt_peer_gtk_GtkListPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkListPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkListPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
+gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuBarPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
+gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuComponentPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
+gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuItemPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuPeer.java
+gnu_java_awt_peer_gtk_GtkMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPanelPeer.java
+gnu_java_awt_peer_gtk_GtkPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPanelPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPanelPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java
+gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPopupMenuPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
+gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollPanePeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java
+gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollbarPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkSelection.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkSelection.java
+gnu_java_awt_peer_gtk_GtkSelection.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkSelection.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkSelection
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
+gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextAreaPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
+gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextFieldPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkToolkit.java
+gnu_java_awt_peer_gtk_GtkToolkit.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkToolkit.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkToolkit
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkWindowPeer.java
+gnu_java_awt_peer_gtk_GtkWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkWindowPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkWindowPeer
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkVolatileImage.java
+gnu_java_awt_peer_gtk_GtkVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkVolatileImage.java
$(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkVolatileImage
-$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: $(top_srcdir)/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
+gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: $(top_srcdir)/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
$(JAVAH) -o $@ gnu.java.awt.dnd.peer.gtk.GtkDragSourceContextPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCheckboxPeer.java
+gnu_java_awt_peer_qt_QtCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCheckboxPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCheckboxPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtToolkit.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtToolkit.java
+gnu_java_awt_peer_qt_QtToolkit.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtToolkit.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtToolkit
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtAudioClip.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtAudioClip.java
+gnu_java_awt_peer_qt_QtAudioClip.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtAudioClip.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtAudioClip
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScreenDevice.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScreenDevice.java
+gnu_java_awt_peer_qt_QtScreenDevice.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScreenDevice.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScreenDevice
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextFieldPeer.java
+gnu_java_awt_peer_qt_QtTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextFieldPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextFieldPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuItemPeer.java
+gnu_java_awt_peer_qt_QtMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuItemPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuItemPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtButtonPeer.java
+gnu_java_awt_peer_qt_QtButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtButtonPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtButtonPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtWindowPeer.java
+gnu_java_awt_peer_qt_QtWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtWindowPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtWindowPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtDialogPeer.java
+gnu_java_awt_peer_qt_QtDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtDialogPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtDialogPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtImage.java
+gnu_java_awt_peer_qt_QtImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtImage.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtImage
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuBarPeer.java
+gnu_java_awt_peer_qt_QtMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuBarPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuBarPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtVolatileImage.java
+gnu_java_awt_peer_qt_QtVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtVolatileImage.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtVolatileImage
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontPeer.java
+gnu_java_awt_peer_qt_QtFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtChoicePeer.java
+gnu_java_awt_peer_qt_QtChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtChoicePeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtChoicePeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtGraphics.java
+gnu_java_awt_peer_qt_QtGraphics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtGraphics.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtGraphics
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtComponentPeer.java
+gnu_java_awt_peer_qt_QtComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtComponentPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtComponentPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuPeer.java
+gnu_java_awt_peer_qt_QtMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextAreaPeer.java
+gnu_java_awt_peer_qt_QtTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextAreaPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextAreaPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QPen.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPen.java
+gnu_java_awt_peer_qt_QPen.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPen.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QPen
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPanelPeer.java
+gnu_java_awt_peer_qt_QtPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPanelPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPanelPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPainterPath.java
+gnu_java_awt_peer_qt_QPainterPath.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPainterPath.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QPainterPath
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontMetrics.java
+gnu_java_awt_peer_qt_QtFontMetrics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontMetrics.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontMetrics
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollPanePeer.java
+gnu_java_awt_peer_qt_QtScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollPanePeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollPanePeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h: $(top_srcdir)/gnu/java/awt/peer/qt/QMatrix.java
+gnu_java_awt_peer_qt_QMatrix.h: $(top_srcdir)/gnu/java/awt/peer/qt/QMatrix.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QMatrix
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtLabelPeer.java
+gnu_java_awt_peer_qt_QtLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtLabelPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtLabelPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPopupMenuPeer.java
+gnu_java_awt_peer_qt_QtPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPopupMenuPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPopupMenuPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFramePeer.java
+gnu_java_awt_peer_qt_QtFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFramePeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFramePeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtListPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtListPeer.java
+gnu_java_awt_peer_qt_QtListPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtListPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtListPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollbarPeer.java
+gnu_java_awt_peer_qt_QtScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollbarPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollbarPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCanvasPeer.java
+gnu_java_awt_peer_qt_QtCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCanvasPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCanvasPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuComponentPeer.java
+gnu_java_awt_peer_qt_QtMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuComponentPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuComponentPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h: $(top_srcdir)/gnu/java/awt/peer/qt/MainQtThread.java
+gnu_java_awt_peer_qt_MainQtThread.h: $(top_srcdir)/gnu/java/awt/peer/qt/MainQtThread.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.MainQtThread
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFileDialogPeer.java
+gnu_java_awt_peer_qt_QtFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFileDialogPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFileDialogPeer
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
+gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
$(JAVAH) -o $@ gnu.java.awt.peer.qt.QtEmbeddedWindowPeer
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaPortDevice.java
+gnu_javax_sound_midi_alsa_AlsaPortDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaPortDevice.java
$(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaPortDevice
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java
+gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java
$(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiSequencerDevice
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java
+gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java
$(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiDeviceProvider
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java
+gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java
$(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSIMidiDeviceProvider
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSISynthesizer.java
+gnu_javax_sound_midi_dssi_DSSISynthesizer.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSISynthesizer.java
$(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSISynthesizer
-$(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h: $(top_srcdir)/gnu/java/util/prefs/gconf/GConfNativePeer.java
+gnu_java_util_prefs_gconf_GConfNativePeer.h: $(top_srcdir)/gnu/java/util/prefs/gconf/GConfNativePeer.java
$(JAVAH) -o $@ gnu.java.util.prefs.gconf.GConfNativePeer
-$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
+gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
$(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReaderNativePeer
-$(top_srcdir)/include/gnu_java_net_VMPlainSocketImpl.h: $(top_srcdir)/vm/reference/gnu/java/net/VMPlainSocketImpl.java
+gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstInputStream.java
+ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.io.GstInputStream
+gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java
+ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.lines.GstNativeDataLine
+gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java
+ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.lines.GstPipeline
+gnu_java_net_VMPlainSocketImpl.h: $(top_srcdir)/vm/reference/gnu/java/net/VMPlainSocketImpl.java
$(JAVAH) -o $@ gnu.java.net.VMPlainSocketImpl
-$(top_srcdir)/include/gnu_java_net_local_LocalSocketImpl.h: $(top_srcdir)/gnu/java/net/local/LocalSocketImpl.java
+gnu_java_net_local_LocalSocketImpl.h: $(top_srcdir)/gnu/java/net/local/LocalSocketImpl.java
$(JAVAH) -o $@ gnu.java.net.local.LocalSocketImpl
-$(top_srcdir)/include/gnu_java_nio_VMChannel.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMChannel.java
+gnu_java_nio_VMChannel.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMChannel.java
$(JAVAH) -o $@ gnu.java.nio.VMChannel
-$(top_srcdir)/include/gnu_java_nio_VMPipe.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMPipe.java
+gnu_java_nio_VMPipe.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMPipe.java
$(JAVAH) -o $@ gnu.java.nio.VMPipe
-$(top_srcdir)/include/gnu_java_nio_VMSelector.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.java
+gnu_java_nio_VMSelector.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.java
$(JAVAH) -o $@ gnu.java.nio.VMSelector
-$(top_srcdir)/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h: $(top_srcdir)/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
+gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h: $(top_srcdir)/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
$(JAVAH) -o $@ gnu.java.lang.management.VMOperatingSystemMXBeanImpl
-$(top_srcdir)/include/java_io_VMFile.h: $(top_srcdir)/vm/reference/java/io/VMFile.java
+java_io_VMFile.h: $(top_srcdir)/vm/reference/java/io/VMFile.java
$(JAVAH) -o $@ java.io.VMFile
-$(top_srcdir)/include/java_io_VMObjectInputStream.h: $(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java
+java_io_VMObjectInputStream.h: $(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java
$(JAVAH) -o $@ java.io.VMObjectInputStream
-$(top_srcdir)/include/java_io_VMObjectStreamClass.h: $(top_srcdir)/vm/reference/java/io/VMObjectStreamClass.java
+java_io_VMObjectStreamClass.h: $(top_srcdir)/vm/reference/java/io/VMObjectStreamClass.java
$(JAVAH) -o $@ java.io.VMObjectStreamClass
-$(top_srcdir)/include/java_lang_VMMath.h: $(top_srcdir)/vm/reference/java/lang/VMMath.java
+java_lang_VMMath.h: $(top_srcdir)/vm/reference/java/lang/VMMath.java
$(JAVAH) -o $@ java.lang.VMMath
-$(top_srcdir)/include/java_lang_VMDouble.h: $(top_srcdir)/vm/reference/java/lang/VMDouble.java
+java_lang_VMDouble.h: $(top_srcdir)/vm/reference/java/lang/VMDouble.java
$(JAVAH) -o $@ java.lang.VMDouble
-$(top_srcdir)/include/java_lang_VMFloat.h: $(top_srcdir)/vm/reference/java/lang/VMFloat.java
+java_lang_VMFloat.h: $(top_srcdir)/vm/reference/java/lang/VMFloat.java
$(JAVAH) -o $@ java.lang.VMFloat
-$(top_srcdir)/include/java_lang_VMProcess.h: $(top_srcdir)/vm/reference/java/lang/VMProcess.java
+java_lang_VMProcess.h: $(top_srcdir)/vm/reference/java/lang/VMProcess.java
$(JAVAH) -o $@ java.lang.VMProcess
-$(top_srcdir)/include/java_lang_VMSystem.h: $(top_srcdir)/vm/reference/java/lang/VMSystem.java
+java_lang_VMSystem.h: $(top_srcdir)/vm/reference/java/lang/VMSystem.java
$(JAVAH) -o $@ java.lang.VMSystem
-$(top_srcdir)/include/java_lang_reflect_VMArray.h: $(top_srcdir)/vm/reference/java/lang/reflect/VMArray.java
+java_lang_reflect_VMArray.h: $(top_srcdir)/vm/reference/java/lang/reflect/VMArray.java
$(JAVAH) -o $@ java.lang.reflect.VMArray
-$(top_srcdir)/include/java_net_VMInetAddress.h: $(top_srcdir)/vm/reference/java/net/VMInetAddress.java
+java_net_VMInetAddress.h: $(top_srcdir)/vm/reference/java/net/VMInetAddress.java
$(JAVAH) -o $@ java.net.VMInetAddress
-$(top_srcdir)/include/java_net_VMNetworkInterface.h: $(top_srcdir)/vm/reference/java/net/VMNetworkInterface.java
+java_net_VMNetworkInterface.h: $(top_srcdir)/vm/reference/java/net/VMNetworkInterface.java
$(JAVAH) -o $@ java.net.VMNetworkInterface
-$(top_srcdir)/include/java_net_VMURLConnection.h: $(top_srcdir)/vm/reference/java/net/VMURLConnection.java
+java_net_VMURLConnection.h: $(top_srcdir)/vm/reference/java/net/VMURLConnection.java
$(JAVAH) -o $@ java.net.VMURLConnection
-$(top_srcdir)/include/java_nio_VMDirectByteBuffer.h: $(top_srcdir)/vm/reference/java/nio/VMDirectByteBuffer.java
+java_nio_VMDirectByteBuffer.h: $(top_srcdir)/vm/reference/java/nio/VMDirectByteBuffer.java
$(JAVAH) -o $@ java.nio.VMDirectByteBuffer
-$(top_srcdir)/include/java_nio_MappedByteBufferImpl.h: $(top_srcdir)/java/nio/MappedByteBufferImpl.java
+java_nio_MappedByteBufferImpl.h: $(top_srcdir)/java/nio/MappedByteBufferImpl.java
$(JAVAH) -o $@ java.nio.MappedByteBufferImpl
-$(top_srcdir)/include/gnu_java_nio_FileChannelImpl.h: $(top_srcdir)/gnu/java/nio/FileChannelImpl.java
+gnu_java_nio_FileChannelImpl.h: $(top_srcdir)/gnu/java/nio/FileChannelImpl.java
$(JAVAH) -o $@ gnu.java.nio.FileChannelImpl
-$(top_srcdir)/include/gnu_java_nio_KqueueSelectorImpl.h: $(top_srcdir)/gnu/java/nio/KqueueSelectorImpl.java
+gnu_java_nio_KqueueSelectorImpl.h: $(top_srcdir)/gnu/java/nio/KqueueSelectorImpl.java
$(JAVAH) -o $@ gnu.java.nio.KqueueSelectorImpl
-$(top_srcdir)/include/gnu_java_nio_EpollSelectorImpl.h: $(top_srcdir)/gnu/java/nio/EpollSelectorImpl.java
+gnu_java_nio_EpollSelectorImpl.h: $(top_srcdir)/gnu/java/nio/EpollSelectorImpl.java
$(JAVAH) -o $@ gnu.java.nio.EpollSelectorImpl
-$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvDecoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvDecoder.java
+gnu_java_nio_charset_iconv_IconvDecoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvDecoder.java
$(JAVAH) -o $@ gnu.java.nio.charset.iconv.IconvDecoder
-$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvEncoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvEncoder.java
+gnu_java_nio_charset_iconv_IconvEncoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvEncoder.java
$(JAVAH) -o $@ gnu.java.nio.charset.iconv.IconvEncoder
-$(top_srcdir)/include/java_util_VMTimeZone.h: $(top_srcdir)/vm/reference/java/util/VMTimeZone.java
+java_util_VMTimeZone.h: $(top_srcdir)/vm/reference/java/util/VMTimeZone.java
$(JAVAH) -o $@ java.util.VMTimeZone
endif # CREATE_JNI_HEADERS
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
target_vendor = @target_vendor@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
-DISTCLEANFILES = jni_md.h config-int.h
+@CREATE_JNI_HEADERS_FALSE@DISTCLEANFILES = jni_md.h config-int.h
+@CREATE_JNI_HEADERS_TRUE@DISTCLEANFILES = jni_md.h config-int.h $(H_FILES)
ARG_JNI_JAVAH = -jni
ARG_CLASSPATH_JAVAH = -bootclasspath
-JAVAH = $(USER_JAVAH) $(ARG_JNI_JAVAH) $(ARG_CLASSPATH_JAVAH) ../lib:$(USER_CLASSLIB)
+JAVAH = $(USER_JAVAH) $(ARG_JNI_JAVAH) $(ARG_CLASSPATH_JAVAH) ../lib:$(PATH_TO_GLIBJ_ZIP)
CLASSDIR = lib
SOUND_H_FILES = \
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h \
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h
+gnu_javax_sound_midi_alsa_AlsaPortDevice.h \
+gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h \
+gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h \
+gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h \
+gnu_javax_sound_midi_dssi_DSSISynthesizer.h
GST_PEER_H_FILES = \
-$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
+gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h \
+gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h \
+gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h \
+gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h
XMLJ_H_FILES = \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathResult.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeElement.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeEntity.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNode.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeAttr.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeLocator.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeXMLReader.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformer.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h
+gnu_xml_libxmlj_dom_GnomeDocument.h \
+gnu_xml_libxmlj_dom_GnomeXPathNodeList.h \
+gnu_xml_libxmlj_dom_GnomeDocumentType.h \
+gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h \
+gnu_xml_libxmlj_dom_GnomeTypeInfo.h \
+gnu_xml_libxmlj_dom_GnomeNodeList.h \
+gnu_xml_libxmlj_dom_GnomeNotation.h \
+gnu_xml_libxmlj_dom_GnomeXPathResult.h \
+gnu_xml_libxmlj_dom_GnomeElement.h \
+gnu_xml_libxmlj_dom_GnomeEntity.h \
+gnu_xml_libxmlj_dom_GnomeNode.h \
+gnu_xml_libxmlj_dom_GnomeXPathExpression.h \
+gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h \
+gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h \
+gnu_xml_libxmlj_dom_GnomeAttr.h \
+gnu_xml_libxmlj_sax_GnomeLocator.h \
+gnu_xml_libxmlj_sax_GnomeXMLReader.h \
+gnu_xml_libxmlj_transform_GnomeTransformer.h \
+gnu_xml_libxmlj_transform_GnomeTransformerFactory.h
GTKPEER_H_FILES = \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoSurface.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphics.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkRobotPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkChoicePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkClipboard.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFramePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkImage.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkListPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkSelection.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h \
-$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
+gnu_java_awt_peer_gtk_CairoSurface.h \
+gnu_java_awt_peer_gtk_CairoGraphics2D.h \
+gnu_java_awt_peer_gtk_ComponentGraphics.h \
+gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h \
+gnu_java_awt_peer_gtk_FreetypeGlyphVector.h \
+gnu_java_awt_peer_gtk_GdkFontPeer.h \
+gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h \
+gnu_java_awt_peer_gtk_GdkPixbufDecoder.h \
+gnu_java_awt_peer_gtk_GdkRobotPeer.h \
+gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h \
+gnu_java_awt_peer_gtk_GtkButtonPeer.h \
+gnu_java_awt_peer_gtk_GtkCanvasPeer.h \
+gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h \
+gnu_java_awt_peer_gtk_GtkCheckboxPeer.h \
+gnu_java_awt_peer_gtk_GtkChoicePeer.h \
+gnu_java_awt_peer_gtk_GtkClipboard.h \
+gnu_java_awt_peer_gtk_GtkComponentPeer.h \
+gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h \
+gnu_java_awt_peer_gtk_GtkFileDialogPeer.h \
+gnu_java_awt_peer_gtk_GtkFramePeer.h \
+gnu_java_awt_peer_gtk_GtkGenericPeer.h \
+gnu_java_awt_peer_gtk_GtkImage.h \
+gnu_java_awt_peer_gtk_GtkLabelPeer.h \
+gnu_java_awt_peer_gtk_GtkListPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuBarPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuItemPeer.h \
+gnu_java_awt_peer_gtk_GtkMenuPeer.h \
+gnu_java_awt_peer_gtk_GtkPanelPeer.h \
+gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h \
+gnu_java_awt_peer_gtk_GtkScrollPanePeer.h \
+gnu_java_awt_peer_gtk_GtkScrollbarPeer.h \
+gnu_java_awt_peer_gtk_GtkSelection.h \
+gnu_java_awt_peer_gtk_GtkTextAreaPeer.h \
+gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
+gnu_java_awt_peer_gtk_GtkToolkit.h \
+gnu_java_awt_peer_gtk_GtkWindowPeer.h \
+gnu_java_awt_peer_gtk_GtkVolatileImage.h \
+gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
QTPEER_H_FILES = \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtToolkit.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtAudioClip.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScreenDevice.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuItemPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtButtonPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtWindowPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtImage.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuBarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtVolatileImage.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtChoicePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphics.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QPen.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFramePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtListPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h
+gnu_java_awt_peer_qt_QtCheckboxPeer.h \
+gnu_java_awt_peer_qt_QtToolkit.h \
+gnu_java_awt_peer_qt_QtAudioClip.h \
+gnu_java_awt_peer_qt_QtScreenDevice.h \
+gnu_java_awt_peer_qt_QtTextFieldPeer.h \
+gnu_java_awt_peer_qt_QtMenuItemPeer.h \
+gnu_java_awt_peer_qt_QtButtonPeer.h \
+gnu_java_awt_peer_qt_QtWindowPeer.h \
+gnu_java_awt_peer_qt_QtDialogPeer.h \
+gnu_java_awt_peer_qt_QtImage.h \
+gnu_java_awt_peer_qt_QtMenuBarPeer.h \
+gnu_java_awt_peer_qt_QtVolatileImage.h \
+gnu_java_awt_peer_qt_QtFontPeer.h \
+gnu_java_awt_peer_qt_QtChoicePeer.h \
+gnu_java_awt_peer_qt_QtGraphics.h \
+gnu_java_awt_peer_qt_QtComponentPeer.h \
+gnu_java_awt_peer_qt_QtMenuPeer.h \
+gnu_java_awt_peer_qt_QtTextAreaPeer.h \
+gnu_java_awt_peer_qt_QPen.h \
+gnu_java_awt_peer_qt_QtPanelPeer.h \
+gnu_java_awt_peer_qt_QPainterPath.h \
+gnu_java_awt_peer_qt_QtFontMetrics.h \
+gnu_java_awt_peer_qt_QtScrollPanePeer.h \
+gnu_java_awt_peer_qt_QMatrix.h \
+gnu_java_awt_peer_qt_QtLabelPeer.h \
+gnu_java_awt_peer_qt_QtPopupMenuPeer.h \
+gnu_java_awt_peer_qt_QtFramePeer.h \
+gnu_java_awt_peer_qt_QtListPeer.h \
+gnu_java_awt_peer_qt_QtScrollbarPeer.h \
+gnu_java_awt_peer_qt_QtCanvasPeer.h \
+gnu_java_awt_peer_qt_QtMenuComponentPeer.h \
+gnu_java_awt_peer_qt_MainQtThread.h \
+gnu_java_awt_peer_qt_QtFileDialogPeer.h \
+gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h
GCONF_PREFS_FILES = \
-$(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h
+gnu_java_util_prefs_gconf_GConfNativePeer.h
H_FILES = \
$(SOUND_H_FILES) \
$(GTKPEER_H_FILES) \
$(QTPEER_H_FILES) \
$(GCONF_PREFS_FILES) \
-$(top_srcdir)/include/gnu_java_net_VMPlainSocketImpl.h \
-$(top_srcdir)/include/gnu_java_net_local_LocalSocketImpl.h \
-$(top_srcdir)/include/gnu_java_nio_EpollSelectorImpl.h \
-$(top_srcdir)/include/gnu_java_nio_FileChannelImpl.h \
-$(top_srcdir)/include/gnu_java_nio_KqueueSelectorImpl.h \
-$(top_srcdir)/include/gnu_java_nio_VMChannel.h \
-$(top_srcdir)/include/gnu_java_nio_VMPipe.h \
-$(top_srcdir)/include/gnu_java_nio_VMSelector.h \
-$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvEncoder.h \
-$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvDecoder.h \
-$(top_srcdir)/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h \
-$(top_srcdir)/include/java_io_VMFile.h \
-$(top_srcdir)/include/java_io_VMObjectInputStream.h \
-$(top_srcdir)/include/java_io_VMObjectStreamClass.h \
-$(top_srcdir)/include/java_lang_VMDouble.h \
-$(top_srcdir)/include/java_lang_VMFloat.h \
-$(top_srcdir)/include/java_lang_VMMath.h \
-$(top_srcdir)/include/java_lang_VMProcess.h \
-$(top_srcdir)/include/java_lang_VMSystem.h \
-$(top_srcdir)/include/java_lang_reflect_VMArray.h \
-$(top_srcdir)/include/java_net_VMInetAddress.h \
-$(top_srcdir)/include/java_net_VMNetworkInterface.h \
-$(top_srcdir)/include/java_net_VMURLConnection.h \
-$(top_srcdir)/include/java_nio_VMDirectByteBuffer.h \
-$(top_srcdir)/include/java_nio_MappedByteBufferImpl.h \
-$(top_srcdir)/include/java_util_VMTimeZone.h
-
+gnu_java_net_VMPlainSocketImpl.h \
+gnu_java_net_local_LocalSocketImpl.h \
+gnu_java_nio_EpollSelectorImpl.h \
+gnu_java_nio_FileChannelImpl.h \
+gnu_java_nio_KqueueSelectorImpl.h \
+gnu_java_nio_VMChannel.h \
+gnu_java_nio_VMPipe.h \
+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_VMFile.h \
+java_io_VMObjectInputStream.h \
+java_io_VMObjectStreamClass.h \
+java_lang_VMDouble.h \
+java_lang_VMFloat.h \
+java_lang_VMMath.h \
+java_lang_VMProcess.h \
+java_lang_VMSystem.h \
+java_lang_reflect_VMArray.h \
+java_net_VMInetAddress.h \
+java_net_VMNetworkInterface.h \
+java_net_VMURLConnection.h \
+java_nio_VMDirectByteBuffer.h \
+java_nio_MappedByteBufferImpl.h \
+java_util_VMTimeZone.h
+
+@CREATE_JNI_HEADERS_TRUE@EXTRA_DIST = $(H_FILES)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
@CREATE_JNI_HEADERS_TRUE@all-local: $(H_FILES)
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocument.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeDocument.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocument.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocument
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathNodeList
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentType.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeDocumentType.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentType.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentType
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeProcessingInstruction
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeTypeInfo.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeTypeInfo.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeTypeInfo.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeTypeInfo
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNodeList.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNodeList.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNodeList
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNotation.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeNotation.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNotation.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNotation
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathResult.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathResult.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeXPathResult.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathResult.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathResult
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeElement.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeElement.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeElement.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeElement.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeElement
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeEntity.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeEntity.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeEntity.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeEntity.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeEntity
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNode.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNode.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeNode.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNode.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNode
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathExpression.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeXPathExpression.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathExpression.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathExpression
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNamedNodeMap
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentBuilder
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeAttr.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeAttr.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_dom_GnomeAttr.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeAttr.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeAttr
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeLocator.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeLocator.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_sax_GnomeLocator.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeLocator.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeLocator
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeXMLReader.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeXMLReader.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_sax_GnomeXMLReader.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeXMLReader.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeXMLReader
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformer.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_transform_GnomeTransformer.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java
+@CREATE_JNI_HEADERS_TRUE@gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformerFactory
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoSurface.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoSurface.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_CairoSurface.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoSurface.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoSurface
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoGraphics2D.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_CairoGraphics2D.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoGraphics2D.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoGraphics2D
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphics.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphics.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_ComponentGraphics.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphics.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphics
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphicsCopy
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: $(top_srcdir)/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: $(top_srcdir)/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.FreetypeGlyphVector
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GdkFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkFontPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphicsEnvironment
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkPixbufDecoder
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkRobotPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkRobotPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GdkRobotPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkRobotPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkRobotPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkScreenGraphicsDevice
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkButtonPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCanvasPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCanvasPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCanvasPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkChoicePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkChoicePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkChoicePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkClipboard.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkClipboard.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkClipboard.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkClipboard.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkClipboard
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkComponentPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkComponentPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkEmbeddedWindowPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFileDialogPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFramePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFramePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFramePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkGenericPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkGenericPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkGenericPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkGenericPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkImage.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkImage.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkImage
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkLabelPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkLabelPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkLabelPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkListPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkListPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkListPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkListPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkListPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuBarPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuComponentPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuItemPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPanelPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPanelPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPanelPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPopupMenuPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollPanePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollbarPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkSelection.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkSelection.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkSelection.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkSelection.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkSelection
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextAreaPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextFieldPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkToolkit.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkToolkit.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkToolkit.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkToolkit
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkWindowPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkWindowPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkVolatileImage.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_gtk_GtkVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkVolatileImage.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkVolatileImage
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: $(top_srcdir)/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: $(top_srcdir)/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.dnd.peer.gtk.GtkDragSourceContextPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCheckboxPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCheckboxPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCheckboxPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtToolkit.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtToolkit.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtToolkit.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtToolkit.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtToolkit
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtAudioClip.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtAudioClip.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtAudioClip.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtAudioClip.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtAudioClip
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScreenDevice.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScreenDevice.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtScreenDevice.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScreenDevice.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScreenDevice
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextFieldPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextFieldPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextFieldPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuItemPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuItemPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuItemPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtButtonPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtButtonPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtButtonPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtWindowPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtWindowPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtDialogPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtDialogPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtDialogPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtImage.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtImage.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtImage
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuBarPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuBarPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuBarPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtVolatileImage.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtVolatileImage.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtVolatileImage
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtChoicePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtChoicePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtChoicePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtGraphics.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtGraphics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtGraphics.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtGraphics
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtComponentPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtComponentPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextAreaPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextAreaPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextAreaPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QPen.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPen.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QPen.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPen.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QPen
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPanelPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPanelPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPanelPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPainterPath.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QPainterPath.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPainterPath.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QPainterPath
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontMetrics.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtFontMetrics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontMetrics.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontMetrics
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollPanePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollPanePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollPanePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h: $(top_srcdir)/gnu/java/awt/peer/qt/QMatrix.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QMatrix.h: $(top_srcdir)/gnu/java/awt/peer/qt/QMatrix.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QMatrix
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtLabelPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtLabelPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtLabelPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPopupMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPopupMenuPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPopupMenuPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFramePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFramePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFramePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtListPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtListPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtListPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtListPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtListPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollbarPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollbarPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollbarPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCanvasPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCanvasPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCanvasPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuComponentPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuComponentPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h: $(top_srcdir)/gnu/java/awt/peer/qt/MainQtThread.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_MainQtThread.h: $(top_srcdir)/gnu/java/awt/peer/qt/MainQtThread.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.MainQtThread
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFileDialogPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFileDialogPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFileDialogPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtEmbeddedWindowPeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaPortDevice.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_midi_alsa_AlsaPortDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaPortDevice.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaPortDevice
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiSequencerDevice
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiDeviceProvider
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSIMidiDeviceProvider
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSISynthesizer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_midi_dssi_DSSISynthesizer.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSISynthesizer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSISynthesizer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h: $(top_srcdir)/gnu/java/util/prefs/gconf/GConfNativePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_util_prefs_gconf_GConfNativePeer.h: $(top_srcdir)/gnu/java/util/prefs/gconf/GConfNativePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.util.prefs.gconf.GConfNativePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReaderNativePeer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_net_VMPlainSocketImpl.h: $(top_srcdir)/vm/reference/gnu/java/net/VMPlainSocketImpl.java
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstInputStream.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.io.GstInputStream
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.lines.GstNativeDataLine
+@CREATE_JNI_HEADERS_TRUE@gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.lines.GstPipeline
+@CREATE_JNI_HEADERS_TRUE@gnu_java_net_VMPlainSocketImpl.h: $(top_srcdir)/vm/reference/gnu/java/net/VMPlainSocketImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.net.VMPlainSocketImpl
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_net_local_LocalSocketImpl.h: $(top_srcdir)/gnu/java/net/local/LocalSocketImpl.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_net_local_LocalSocketImpl.h: $(top_srcdir)/gnu/java/net/local/LocalSocketImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.net.local.LocalSocketImpl
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_VMChannel.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMChannel.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_VMChannel.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMChannel.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.VMChannel
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_VMPipe.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMPipe.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_VMPipe.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMPipe.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.VMPipe
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_VMSelector.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_VMSelector.h: $(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.VMSelector
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h: $(top_srcdir)/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
+@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@$(top_srcdir)/include/java_io_VMFile.h: $(top_srcdir)/vm/reference/java/io/VMFile.java
+@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@$(top_srcdir)/include/java_io_VMObjectInputStream.h: $(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java
+@CREATE_JNI_HEADERS_TRUE@java_io_VMObjectInputStream.h: $(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.io.VMObjectInputStream
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_io_VMObjectStreamClass.h: $(top_srcdir)/vm/reference/java/io/VMObjectStreamClass.java
+@CREATE_JNI_HEADERS_TRUE@java_io_VMObjectStreamClass.h: $(top_srcdir)/vm/reference/java/io/VMObjectStreamClass.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.io.VMObjectStreamClass
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_lang_VMMath.h: $(top_srcdir)/vm/reference/java/lang/VMMath.java
+@CREATE_JNI_HEADERS_TRUE@java_lang_VMMath.h: $(top_srcdir)/vm/reference/java/lang/VMMath.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.lang.VMMath
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_lang_VMDouble.h: $(top_srcdir)/vm/reference/java/lang/VMDouble.java
+@CREATE_JNI_HEADERS_TRUE@java_lang_VMDouble.h: $(top_srcdir)/vm/reference/java/lang/VMDouble.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.lang.VMDouble
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_lang_VMFloat.h: $(top_srcdir)/vm/reference/java/lang/VMFloat.java
+@CREATE_JNI_HEADERS_TRUE@java_lang_VMFloat.h: $(top_srcdir)/vm/reference/java/lang/VMFloat.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.lang.VMFloat
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_lang_VMProcess.h: $(top_srcdir)/vm/reference/java/lang/VMProcess.java
+@CREATE_JNI_HEADERS_TRUE@java_lang_VMProcess.h: $(top_srcdir)/vm/reference/java/lang/VMProcess.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.lang.VMProcess
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_lang_VMSystem.h: $(top_srcdir)/vm/reference/java/lang/VMSystem.java
+@CREATE_JNI_HEADERS_TRUE@java_lang_VMSystem.h: $(top_srcdir)/vm/reference/java/lang/VMSystem.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.lang.VMSystem
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_lang_reflect_VMArray.h: $(top_srcdir)/vm/reference/java/lang/reflect/VMArray.java
+@CREATE_JNI_HEADERS_TRUE@java_lang_reflect_VMArray.h: $(top_srcdir)/vm/reference/java/lang/reflect/VMArray.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.lang.reflect.VMArray
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_net_VMInetAddress.h: $(top_srcdir)/vm/reference/java/net/VMInetAddress.java
+@CREATE_JNI_HEADERS_TRUE@java_net_VMInetAddress.h: $(top_srcdir)/vm/reference/java/net/VMInetAddress.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.net.VMInetAddress
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_net_VMNetworkInterface.h: $(top_srcdir)/vm/reference/java/net/VMNetworkInterface.java
+@CREATE_JNI_HEADERS_TRUE@java_net_VMNetworkInterface.h: $(top_srcdir)/vm/reference/java/net/VMNetworkInterface.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.net.VMNetworkInterface
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_net_VMURLConnection.h: $(top_srcdir)/vm/reference/java/net/VMURLConnection.java
+@CREATE_JNI_HEADERS_TRUE@java_net_VMURLConnection.h: $(top_srcdir)/vm/reference/java/net/VMURLConnection.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.net.VMURLConnection
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_nio_VMDirectByteBuffer.h: $(top_srcdir)/vm/reference/java/nio/VMDirectByteBuffer.java
+@CREATE_JNI_HEADERS_TRUE@java_nio_VMDirectByteBuffer.h: $(top_srcdir)/vm/reference/java/nio/VMDirectByteBuffer.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.nio.VMDirectByteBuffer
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_nio_MappedByteBufferImpl.h: $(top_srcdir)/java/nio/MappedByteBufferImpl.java
+@CREATE_JNI_HEADERS_TRUE@java_nio_MappedByteBufferImpl.h: $(top_srcdir)/java/nio/MappedByteBufferImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.nio.MappedByteBufferImpl
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_FileChannelImpl.h: $(top_srcdir)/gnu/java/nio/FileChannelImpl.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_FileChannelImpl.h: $(top_srcdir)/gnu/java/nio/FileChannelImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.FileChannelImpl
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_KqueueSelectorImpl.h: $(top_srcdir)/gnu/java/nio/KqueueSelectorImpl.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_KqueueSelectorImpl.h: $(top_srcdir)/gnu/java/nio/KqueueSelectorImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.KqueueSelectorImpl
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_EpollSelectorImpl.h: $(top_srcdir)/gnu/java/nio/EpollSelectorImpl.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_EpollSelectorImpl.h: $(top_srcdir)/gnu/java/nio/EpollSelectorImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.EpollSelectorImpl
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvDecoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvDecoder.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_charset_iconv_IconvDecoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvDecoder.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.charset.iconv.IconvDecoder
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvEncoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvEncoder.java
+@CREATE_JNI_HEADERS_TRUE@gnu_java_nio_charset_iconv_IconvEncoder.h: $(top_srcdir)/gnu/java/nio/charset/iconv/IconvEncoder.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.nio.charset.iconv.IconvEncoder
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/java_util_VMTimeZone.h: $(top_srcdir)/vm/reference/java/util/VMTimeZone.java
+@CREATE_JNI_HEADERS_TRUE@java_util_VMTimeZone.h: $(top_srcdir)/vm/reference/java/util/VMTimeZone.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ java.util.VMTimeZone
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
/* Define to 1 if you have the `munmap' function. */
#undef HAVE_MUNMAP
+/* Define to 1 if you have the <netinet/in_systm.h> header file. */
+#undef HAVE_NETINET_IN_SYSTM_H
+
+/* Define to 1 if you have the <netinet/ip.h> header file. */
+#undef HAVE_NETINET_IP_H
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#undef HAVE_NET_IF_H
+
/* Define to 1 if you have the `open' function. */
#undef HAVE_OPEN
/* Define to 1 if you have the `read' function. */
#undef HAVE_READ
-/* Define to 1 if you have the `readdir_r' function. */
-#undef HAVE_READDIR_R
-
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
/* Define this symbol if you have SO_NOSIGPIPE */
#undef HAVE_SO_NOSIGPIPE
+/* Define to 1 if you have the `statvfs' function. */
+#undef HAVE_STATVFS
+
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
+/* Define to 1 if you have the <sys/loadavg.h> header file. */
+#undef HAVE_SYS_LOADAVG_H
+
/* Define to 1 if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
/* Define to 1 if you have libXrender. */
#undef HAVE_XRENDER
+/* Define to 1 if you have libXtst. */
+#undef HAVE_XTEST
+
+/* Define to 1 if you have the `\' function. */
+#undef HAVE__
+
/* Define if the host machine stores words of multi-word integers in
big-endian order. */
#undef HOST_WORDS_BIG_ENDIAN
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer__
#define __gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_CairoGraphics2D__
#define __gnu_java_awt_peer_gtk_CairoGraphics2D__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip (JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetAntialias (JNIEnv *env, jobject, jlong, jboolean);
+
#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
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_CairoSurface__
#define __gnu_java_awt_peer_gtk_CairoSurface__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_ComponentGraphics__
#define __gnu_java_awt_peer_gtk_ComponentGraphics__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
#endif
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState (JNIEnv *env, jobject, jobject);
-JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile (JNIEnv *env, jobject, jlong, jint, jint);
+JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile (JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_start_1gdk_1drawing (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_end_1gdk_1drawing (JNIEnv *env, jobject);
JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_hasXRender (JNIEnv *env, jclass);
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_ComponentGraphicsCopy__
#define __gnu_java_awt_peer_gtk_ComponentGraphicsCopy__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_FreetypeGlyphVector__
#define __gnu_java_awt_peer_gtk_FreetypeGlyphVector__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
#endif
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_dispose (JNIEnv *env, jobject, jlongArray);
+JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getNativeFontPointer (JNIEnv *env, jobject, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs (JNIEnv *env, jobject, jintArray, jintArray, jlongArray);
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning (JNIEnv *env, jobject, jint, jint, jlong);
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);
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_dispose (JNIEnv *env, jobject, jlongArray);
-JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getNativeFontPointer (JNIEnv *env, jobject, jint);
#ifdef __cplusplus
}
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GdkFontPeer__
#define __gnu_java_awt_peer_gtk_GdkFontPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkFontPeer_getTextMetrics (JNIEnv *env, jobject, jstring, jdoubleArray);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkFontPeer_releasePeerGraphicsResource (JNIEnv *env, jobject);
JNIEXPORT jbyteArray JNICALL Java_gnu_java_awt_peer_gtk_GdkFontPeer_getTrueTypeTable (JNIEnv *env, jobject, jbyte, jbyte, jbyte, jbyte);
+
#undef gnu_java_awt_peer_gtk_GdkFontPeer_FONT_METRICS_ASCENT
#define gnu_java_awt_peer_gtk_GdkFontPeer_FONT_METRICS_ASCENT 0L
#undef gnu_java_awt_peer_gtk_GdkFontPeer_FONT_METRICS_MAX_ASCENT
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GdkPixbufDecoder__
#define __gnu_java_awt_peer_gtk_GdkPixbufDecoder__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GdkRobotPeer__
#define __gnu_java_awt_peer_gtk_GdkRobotPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice__
#define __gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkButtonPeer__
#define __gnu_java_awt_peer_gtk_GtkButtonPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkCanvasPeer__
#define __gnu_java_awt_peer_gtk_GtkCanvasPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer__
#define __gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkCheckboxPeer__
#define __gnu_java_awt_peer_gtk_GtkCheckboxPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkChoicePeer__
#define __gnu_java_awt_peer_gtk_GtkChoicePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkClipboard__
#define __gnu_java_awt_peer_gtk_GtkClipboard__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkComponentPeer__
#define __gnu_java_awt_peer_gtk_GtkComponentPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetDimensions (JNIEnv *env, jobject, jintArray);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetPreferredDimensions (JNIEnv *env, jobject, jintArray);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreen (JNIEnv *env, jobject, jintArray);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreenUnlocked (JNIEnv *env, jobject, jintArray);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen (JNIEnv *env, jobject, jintArray);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreenUnlocked (JNIEnv *env, jobject, jintArray);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursor (JNIEnv *env, jobject, jint, jobject, jint, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursorUnlocked (JNIEnv *env, jobject, jint, jobject, jint, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetBackground (JNIEnv *env, jobject, jint, jint, jint);
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer__
#define __gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkFileDialogPeer__
#define __gnu_java_awt_peer_gtk_GtkFileDialogPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkFramePeer__
#define __gnu_java_awt_peer_gtk_GtkFramePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkGenericPeer__
#define __gnu_java_awt_peer_gtk_GtkGenericPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkImage__
#define __gnu_java_awt_peer_gtk_GtkImage__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkLabelPeer__
#define __gnu_java_awt_peer_gtk_GtkLabelPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkListPeer__
#define __gnu_java_awt_peer_gtk_GtkListPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkMenuBarPeer__
#define __gnu_java_awt_peer_gtk_GtkMenuBarPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkMenuComponentPeer__
#define __gnu_java_awt_peer_gtk_GtkMenuComponentPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkMenuItemPeer__
#define __gnu_java_awt_peer_gtk_GtkMenuItemPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkMenuPeer__
#define __gnu_java_awt_peer_gtk_GtkMenuPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkPanelPeer__
#define __gnu_java_awt_peer_gtk_GtkPanelPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkPopupMenuPeer__
#define __gnu_java_awt_peer_gtk_GtkPopupMenuPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkScrollPanePeer__
#define __gnu_java_awt_peer_gtk_GtkScrollPanePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkScrollbarPeer__
#define __gnu_java_awt_peer_gtk_GtkScrollbarPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkSelection__
#define __gnu_java_awt_peer_gtk_GtkSelection__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkTextAreaPeer__
#define __gnu_java_awt_peer_gtk_GtkTextAreaPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkTextFieldPeer__
#define __gnu_java_awt_peer_gtk_GtkTextFieldPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkToolkit__
#define __gnu_java_awt_peer_gtk_GtkToolkit__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkVolatileImage__
#define __gnu_java_awt_peer_gtk_GtkVolatileImage__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_gtk_GtkWindowPeer__
#define __gnu_java_awt_peer_gtk_GtkWindowPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetLocation (JNIEnv *env, jobject, jint, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetLocationUnlocked (JNIEnv *env, jobject, jint, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setSize (JNIEnv *env, jobject, jint, jint);
+
#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
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_MainQtThread__
#define __gnu_java_awt_peer_qt_MainQtThread__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QMatrix__
#define __gnu_java_awt_peer_qt_QMatrix__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QPainterPath__
#define __gnu_java_awt_peer_qt_QPainterPath__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QPen__
#define __gnu_java_awt_peer_qt_QPen__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtAudioClip__
#define __gnu_java_awt_peer_qt_QtAudioClip__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtButtonPeer__
#define __gnu_java_awt_peer_qt_QtButtonPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtCanvasPeer__
#define __gnu_java_awt_peer_qt_QtCanvasPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtCheckboxPeer__
#define __gnu_java_awt_peer_qt_QtCheckboxPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtChoicePeer__
#define __gnu_java_awt_peer_qt_QtChoicePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtComponentPeer__
#define __gnu_java_awt_peer_qt_QtComponentPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtComponentPeer_setEnabled (JNIEnv *env, jobject, jboolean);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtComponentPeer_setVisible (JNIEnv *env, jobject, jboolean);
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_qt_QtComponentPeer_getBounds (JNIEnv *env, jobject);
+
#undef gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER
#define gnu_java_awt_peer_qt_QtComponentPeer_POPUP_TRIGGER 3L
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtDialogPeer__
#define __gnu_java_awt_peer_qt_QtDialogPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtEmbeddedWindowPeer__
#define __gnu_java_awt_peer_qt_QtEmbeddedWindowPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtFileDialogPeer__
#define __gnu_java_awt_peer_qt_QtFileDialogPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtFontMetrics__
#define __gnu_java_awt_peer_qt_QtFontMetrics__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtFontPeer__
#define __gnu_java_awt_peer_qt_QtFontPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtFramePeer__
#define __gnu_java_awt_peer_qt_QtFramePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtGraphics__
#define __gnu_java_awt_peer_qt_QtGraphics__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtImage__
#define __gnu_java_awt_peer_qt_QtImage__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtLabelPeer__
#define __gnu_java_awt_peer_qt_QtLabelPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtListPeer__
#define __gnu_java_awt_peer_qt_QtListPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtMenuBarPeer__
#define __gnu_java_awt_peer_qt_QtMenuBarPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtMenuComponentPeer__
#define __gnu_java_awt_peer_qt_QtMenuComponentPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtMenuItemPeer__
#define __gnu_java_awt_peer_qt_QtMenuItemPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtMenuPeer__
#define __gnu_java_awt_peer_qt_QtMenuPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtPanelPeer__
#define __gnu_java_awt_peer_qt_QtPanelPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtPopupMenuPeer__
#define __gnu_java_awt_peer_qt_QtPopupMenuPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtScreenDevice__
#define __gnu_java_awt_peer_qt_QtScreenDevice__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtScrollPanePeer__
#define __gnu_java_awt_peer_qt_QtScrollPanePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtScrollbarPeer__
#define __gnu_java_awt_peer_qt_QtScrollbarPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtTextAreaPeer__
#define __gnu_java_awt_peer_qt_QtTextAreaPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtTextFieldPeer__
#define __gnu_java_awt_peer_qt_QtTextFieldPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtToolkit__
#define __gnu_java_awt_peer_qt_QtToolkit__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtVolatileImage__
#define __gnu_java_awt_peer_qt_QtVolatileImage__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_awt_peer_qt_QtWindowPeer__
#define __gnu_java_awt_peer_qt_QtWindowPeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_lang_management_VMOperatingSystemMXBeanImpl__
#define __gnu_java_lang_management_VMOperatingSystemMXBeanImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_net_VMPlainSocketImpl__
#define __gnu_java_net_VMPlainSocketImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_gnu_java_net_VMPlainSocketImpl_shutdownInput (JNIEnv *env, jclass, jint);
JNIEXPORT void JNICALL Java_gnu_java_net_VMPlainSocketImpl_shutdownOutput (JNIEnv *env, jclass, jint);
JNIEXPORT void JNICALL Java_gnu_java_net_VMPlainSocketImpl_sendUrgentData (JNIEnv *env, jclass, jint, jint);
+
#undef gnu_java_net_VMPlainSocketImpl_CP_IP_TTL
#define gnu_java_net_VMPlainSocketImpl_CP_IP_TTL 7777L
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_net_local_LocalSocketImpl__
#define __gnu_java_net_local_LocalSocketImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_EpollSelectorImpl__
#define __gnu_java_nio_EpollSelectorImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT jint JNICALL Java_gnu_java_nio_EpollSelectorImpl_epoll_1wait (JNIEnv *env, jclass, jint, jobject, jint, jint);
JNIEXPORT jint JNICALL Java_gnu_java_nio_EpollSelectorImpl_selected_1fd (JNIEnv *env, jclass, jobject);
JNIEXPORT jint JNICALL Java_gnu_java_nio_EpollSelectorImpl_selected_1ops (JNIEnv *env, jclass, jobject);
+
#undef gnu_java_nio_EpollSelectorImpl_DEFAULT_EPOLL_SIZE
#define gnu_java_nio_EpollSelectorImpl_DEFAULT_EPOLL_SIZE 128L
#undef gnu_java_nio_EpollSelectorImpl_OP_ACCEPT
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_FileChannelImpl__
#define __gnu_java_nio_FileChannelImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
#endif
+
#undef gnu_java_nio_FileChannelImpl_READ
#define gnu_java_nio_FileChannelImpl_READ 1L
#undef gnu_java_nio_FileChannelImpl_WRITE
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_KqueueSelectorImpl__
#define __gnu_java_nio_KqueueSelectorImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT jint JNICALL Java_gnu_java_nio_KqueueSelectorImpl_fetch_1key (JNIEnv *env, jclass, jobject);
JNIEXPORT jint JNICALL Java_gnu_java_nio_KqueueSelectorImpl_ready_1ops (JNIEnv *env, jclass, jobject, jint);
JNIEXPORT jboolean JNICALL Java_gnu_java_nio_KqueueSelectorImpl_check_1eof (JNIEnv *env, jclass, jobject);
+
#undef gnu_java_nio_KqueueSelectorImpl_MAX_DOUBLING_CAPACITY
#define gnu_java_nio_KqueueSelectorImpl_MAX_DOUBLING_CAPACITY 16384L
#undef gnu_java_nio_KqueueSelectorImpl_CAP_INCREMENT
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_VMChannel__
#define __gnu_java_nio_VMChannel__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_VMPipe__
#define __gnu_java_nio_VMPipe__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_VMSelector__
#define __gnu_java_nio_VMSelector__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_charset_iconv_IconvDecoder__
#define __gnu_java_nio_charset_iconv_IconvDecoder__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_nio_charset_iconv_IconvEncoder__
#define __gnu_java_nio_charset_iconv_IconvEncoder__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_java_util_prefs_gconf_GConfNativePeer__
#define __gnu_java_util_prefs_gconf_GConfNativePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider__
#define __gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice__
#define __gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_javax_sound_midi_alsa_AlsaPortDevice__
#define __gnu_javax_sound_midi_alsa_AlsaPortDevice__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider__
#define __gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_javax_sound_midi_dssi_DSSISynthesizer__
#define __gnu_javax_sound_midi_dssi_DSSISynthesizer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer__
#define __gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1stream (JNIEnv *env, jclass, jobject, jobject);
JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1file (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_init_1id_1cache (JNIEnv *env, jclass);
#ifdef __cplusplus
}
--- /dev/null
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_io_GstInputStream__
+#define __gnu_javax_sound_sampled_gstreamer_io_GstInputStream__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstInputStream_init_1instance (JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstInputStream_init_1id_1cache (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_javax_sound_sampled_gstreamer_io_GstInputStream__ */
--- /dev/null
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine__
+#define __gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine_init_1id_1cache (JNIEnv *env, jclass);
+JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine_setup_1sink_1pipeline (JNIEnv *env, jclass, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine__ */
--- /dev/null
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline__
+#define __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_init_1id_1cache (JNIEnv *env, jclass);
+JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_set_1state (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT jint JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_available (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_open_1native_1pipe (JNIEnv *env, jclass, jobject, jint);
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_close_1native_1pipe (JNIEnv *env, jclass, jobject);
+JNIEXPORT void JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_init_1instance (JNIEnv *env, jobject);
+JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_create_1named_1pipe (JNIEnv *env, jobject, jobject);
+JNIEXPORT jlong JNICALL Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_detect_1pipe_1size (JNIEnv *env, jobject);
+
+#undef gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_READ
+#define gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_READ 0L
+#undef gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_WRITE
+#define gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_WRITE 1L
+#undef gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_QUEUED
+#define gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_QUEUED 1L
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline__ */
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeAttr__
#define __gnu_xml_libxmlj_dom_GnomeAttr__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeDocument__
#define __gnu_xml_libxmlj_dom_GnomeDocument__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeDocumentBuilder__
#define __gnu_xml_libxmlj_dom_GnomeDocumentBuilder__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeDocumentType__
#define __gnu_xml_libxmlj_dom_GnomeDocumentType__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeElement__
#define __gnu_xml_libxmlj_dom_GnomeElement__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeEntity__
#define __gnu_xml_libxmlj_dom_GnomeEntity__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeNamedNodeMap__
#define __gnu_xml_libxmlj_dom_GnomeNamedNodeMap__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeNode__
#define __gnu_xml_libxmlj_dom_GnomeNode__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeNodeList__
#define __gnu_xml_libxmlj_dom_GnomeNodeList__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeNotation__
#define __gnu_xml_libxmlj_dom_GnomeNotation__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeProcessingInstruction__
#define __gnu_xml_libxmlj_dom_GnomeProcessingInstruction__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeTypeInfo__
#define __gnu_xml_libxmlj_dom_GnomeTypeInfo__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeXPathExpression__
#define __gnu_xml_libxmlj_dom_GnomeXPathExpression__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeXPathNodeList__
#define __gnu_xml_libxmlj_dom_GnomeXPathNodeList__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_dom_GnomeXPathResult__
#define __gnu_xml_libxmlj_dom_GnomeXPathResult__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_sax_GnomeLocator__
#define __gnu_xml_libxmlj_sax_GnomeLocator__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_sax_GnomeXMLReader__
#define __gnu_xml_libxmlj_sax_GnomeXMLReader__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_transform_GnomeTransformer__
#define __gnu_xml_libxmlj_transform_GnomeTransformer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __gnu_xml_libxmlj_transform_GnomeTransformerFactory__
#define __gnu_xml_libxmlj_transform_GnomeTransformerFactory__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_io_VMFile__
#define __java_io_VMFile__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_delete (JNIEnv *env, jclass, jstring);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_setLastModified (JNIEnv *env, jclass, jstring, jlong);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_mkdir (JNIEnv *env, jclass, jstring);
+JNIEXPORT jlong JNICALL Java_java_io_VMFile_getTotalSpace (JNIEnv *env, jclass, jstring);
+JNIEXPORT jlong JNICALL Java_java_io_VMFile_getFreeSpace (JNIEnv *env, jclass, jstring);
+JNIEXPORT jlong JNICALL Java_java_io_VMFile_getUsableSpace (JNIEnv *env, jclass, jstring);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_setReadable (JNIEnv *env, jclass, jstring, jboolean, jboolean);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_setWritable (JNIEnv *env, jclass, jstring, jboolean, jboolean);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_setExecutable (JNIEnv *env, jclass, jstring, jboolean, jboolean);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_canExecute (JNIEnv *env, jclass, jstring);
JNIEXPORT jboolean JNICALL Java_java_io_VMFile_isDirectory (JNIEnv *env, jclass, jstring);
JNIEXPORT jstring JNICALL Java_java_io_VMFile_toCanonicalForm (JNIEnv *env, jclass, jstring);
+
#undef java_io_VMFile_IS_CASE_SENSITIVE
#define java_io_VMFile_IS_CASE_SENSITIVE 1L
#undef java_io_VMFile_IS_DOS_8_3
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_io_VMObjectInputStream__
#define __java_io_VMObjectInputStream__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_io_VMObjectStreamClass__
#define __java_io_VMObjectStreamClass__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_lang_VMDouble__
#define __java_lang_VMDouble__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
#endif
-JNIEXPORT jlong JNICALL Java_java_lang_VMDouble_doubleToLongBits (JNIEnv *env, jclass, jdouble);
JNIEXPORT jlong JNICALL Java_java_lang_VMDouble_doubleToRawLongBits (JNIEnv *env, jclass, jdouble);
JNIEXPORT jdouble JNICALL Java_java_lang_VMDouble_longBitsToDouble (JNIEnv *env, jclass, jlong);
JNIEXPORT jstring JNICALL Java_java_lang_VMDouble_toString (JNIEnv *env, jclass, jdouble, jboolean);
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_lang_VMFloat__
#define __java_lang_VMFloat__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
#endif
-JNIEXPORT jint JNICALL Java_java_lang_VMFloat_floatToIntBits (JNIEnv *env, jclass, jfloat);
JNIEXPORT jint JNICALL Java_java_lang_VMFloat_floatToRawIntBits (JNIEnv *env, jclass, jfloat);
JNIEXPORT jfloat JNICALL Java_java_lang_VMFloat_intBitsToFloat (JNIEnv *env, jclass, jint);
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_lang_VMMath__
#define __java_lang_VMMath__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_lang_VMProcess__
#define __java_lang_VMProcess__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_java_lang_VMProcess_nativeSpawn (JNIEnv *env, jobject, jobjectArray, jobjectArray, jobject, jboolean);
JNIEXPORT jboolean JNICALL Java_java_lang_VMProcess_nativeReap (JNIEnv *env, jclass);
JNIEXPORT void JNICALL Java_java_lang_VMProcess_nativeKill (JNIEnv *env, jclass, jlong);
+
#undef java_lang_VMProcess_INITIAL
#define java_lang_VMProcess_INITIAL 0L
#undef java_lang_VMProcess_RUNNING
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_lang_VMSystem__
#define __java_lang_VMSystem__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_lang_reflect_VMArray__
#define __java_lang_reflect_VMArray__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_net_VMInetAddress__
#define __java_net_VMInetAddress__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_net_VMNetworkInterface__
#define __java_net_VMNetworkInterface__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_net_VMURLConnection__
#define __java_net_VMURLConnection__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
JNIEXPORT void JNICALL Java_java_net_VMURLConnection_init (JNIEnv *env, jclass);
JNIEXPORT jstring JNICALL Java_java_net_VMURLConnection_guessContentTypeFromBuffer (JNIEnv *env, jclass, jbyteArray, jint);
+
#undef java_net_VMURLConnection_LENGTH
#define java_net_VMURLConnection_LENGTH 1024L
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_nio_MappedByteBufferImpl__
#define __java_nio_MappedByteBufferImpl__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_nio_VMDirectByteBuffer__
#define __java_nio_VMDirectByteBuffer__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+
#ifndef __java_util_VMTimeZone__
#define __java_util_VMTimeZone__
-#include <jni.h>
-
#ifdef __cplusplus
extern "C"
{
struct _jmethodID;
typedef struct _jfieldID *jfieldID;
typedef struct _jmethodID *jmethodID;
+
+enum _jobjectRefType
+{
+ JNIInvalidRefType = 0,
+ JNILocalRefType = 1,
+ JNIGlobalRefType = 2,
+ JNIWeakGlobalRefType = 3
+};
+
+typedef enum _jobjectRefType jobjectRefType;
#endif
/* Version numbers. */
#define JNI_VERSION_1_1 0x00010001
#define JNI_VERSION_1_2 0x00010002
#define JNI_VERSION_1_4 0x00010004
+#define JNI_VERSION_1_6 0x00010006
/* Used when releasing array elements. */
#define JNI_COMMIT 1
jint (JNICALL *GetJavaVM) (JNIEnv *, JavaVM **);
/* ---- JNI 1.2 functions ---- */
+
void (JNICALL *GetStringRegion) (JNIEnv *, jstring, jsize,
jsize, jchar *);
void (JNICALL *GetStringUTFRegion) (JNIEnv *, jstring, jsize,
jboolean (JNICALL *ExceptionCheck) (JNIEnv *);
/* ---- JNI 1.4 functions ---- */
+
jobject (JNICALL *NewDirectByteBuffer) (JNIEnv *, void *, jlong);
void * (JNICALL *GetDirectBufferAddress) (JNIEnv *, jobject);
jlong (JNICALL *GetDirectBufferCapacity) (JNIEnv *, jobject);
+
+ /* ---- JNI 1.6 functions ---- */
+
+ jobjectRefType (JNICALL *GetObjectRefType) (JNIEnv *, jobject);
};
#ifdef __cplusplus
jint GetJavaVM (JavaVM ** val0)
{ return p->GetJavaVM (this, val0); }
+ /* ---- JNI 1.2 functions ---- */
+
void GetStringRegion (jstring val0, jsize val1, jsize val2, jchar * val3)
{ p->GetStringRegion (this, val0, val1, val2, val3); }
jboolean ExceptionCheck ()
{ return p->ExceptionCheck (this); }
+ /* ---- JNI 1.4 functions ---- */
+
jobject NewDirectByteBuffer (void *addr, jlong capacity)
{ return p->NewDirectByteBuffer (this, addr, capacity); }
jlong GetDirectBufferCapacity (jobject buf)
{ return p->GetDirectBufferCapacity (this, buf); }
+
+ /* ---- JNI 1.6 functions ---- */
+
+ jobjectRefType GetObjectRefType (jobject obj)
+ { return p->GetObjectRefType (this, obj); }
};
#endif /* __cplusplus */
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2005-05-14.22
+scriptversion=2006-12-25.00
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
-# put in absolute paths if you don't have them in your path; or use env. vars.
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
-chmodcmd="$chmodprog 0755"
-chowncmd=
chgrpcmd=
-stripcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
rmcmd="$rmprog -f"
-mvcmd="$mvprog"
+stripcmd=
+
src=
dst=
dir_arg=
-dstarg=
+dst_arg=
+
+copy_on_change=false
no_target_directory=
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 4th, create DIRECTORIES.
Options:
--c (ignored)
--d create directories instead of installing files.
--g GROUP $chgrpprog installed files to GROUP.
--m MODE $chmodprog installed files to MODE.
--o USER $chownprog installed files to USER.
--s $stripprog installed files.
--t DIRECTORY install into DIRECTORY.
--T report an error if DSTFILE is a directory.
---help display this help and exit.
---version display version info and exit.
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
"
-while test -n "$1"; do
+while test $# -ne 0; do
case $1 in
- -c) shift
- continue;;
+ -c) ;;
+
+ -C) copy_on_change=true;;
- -d) dir_arg=true
- shift
- continue;;
+ -d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
+ shift;;
--help) echo "$usage"; exit $?;;
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
+ shift;;
- -s) stripcmd=$stripprog
- shift
- continue;;
+ -s) stripcmd=$stripprog;;
- -t) dstarg=$2
- shift
- shift
- continue;;
+ -t) dst_arg=$2
+ shift;;
- -T) no_target_directory=true
- shift
- continue;;
+ -T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
- *) # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- test -n "$dir_arg$dstarg" && break
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dstarg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
- shift # fnord
- fi
- shift # arg
- dstarg=$arg
- done
+ --) shift
break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
esac
+ shift
done
-if test -z "$1"; then
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
exit 0
fi
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
for src
do
# Protect names starting with `-'.
case $src in
- -*) src=./$src ;;
+ -*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
- src=
-
- if test -d "$dst"; then
- mkdircmd=:
- chmodcmd=
- else
- mkdircmd=$mkdirprog
- fi
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
else
+
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
exit 1
fi
- if test -z "$dstarg"; then
+ if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
- dst=$dstarg
+ dst=$dst_arg
# Protect names starting with `-'.
case $dst in
- -*) dst=./$dst ;;
+ -*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
- echo "$0: $dstarg: Is a directory" >&2
+ echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
- dst=$dst/`basename "$src"`
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
fi
fi
- # This sed command emulates the dirname command.
- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
- # Make sure that the destination directory exists.
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
- # Skip lots of stat calls in the usual case.
- if test ! -d "$dstdir"; then
- defaultIFS='
- '
- IFS="${IFS-$defaultIFS}"
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
- oIFS=$IFS
- # Some sh's can't handle IFS=/ for some reason.
- IFS='%'
- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
- shift
- IFS=$oIFS
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
- pathcomp=
+ eval "$initialize_posix_glob"
- while test $# -ne 0 ; do
- pathcomp=$pathcomp$1
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
shift
- if test ! -d "$pathcomp"; then
- $mkdirprog "$pathcomp"
- # mkdir can fail with a `File exist' error in case several
- # install-sh are creating the directory concurrently. This
- # is OK.
- test -d "$pathcomp" || exit
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
- pathcomp=$pathcomp/
- done
+ fi
fi
if test -n "$dir_arg"; then
- $doit $mkdircmd "$dst" \
- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
- dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
- trap '(exit $?); exit' 1 2 13 15
# Copy the file name to the temp name.
- $doit $cpprog "$src" "$dsttmp" &&
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
- # Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
- || {
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
-
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- if test -f "$dstdir/$dstfile"; then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
- || {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit 1
- }
- else
- :
- fi
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
- }
- }
- fi || { (exit 1); exit 1; }
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
done
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
- (exit 0); exit 0
-}
-
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
c.setAccessible(true);
// Create a new instance, to make sure that we can, and
// to cause any ClassCastException.
- AWTKeyStroke dummy = (AWTKeyStroke) c.newInstance(null);
+ AWTKeyStroke dummy = (AWTKeyStroke) c.newInstance();
return c;
}
});
else
try
{
- stroke = (AWTKeyStroke) c.newInstance(null);
+ stroke = (AWTKeyStroke) c.newInstance();
stroke.keyChar = keyChar;
stroke.keyCode = keyCode;
stroke.modifiers = modifiers;
throw (Error) new InternalError().initCause(e);
}
// Check level 1 cache.
- AWTKeyStroke cached = (AWTKeyStroke) cache.get(stroke);
+ AWTKeyStroke cached = cache.get(stroke);
if (cached == null)
cache.put(stroke, stroke);
else
while (true)
{
if (comp == null)
- return false;
- if (comp == this)
- return true;
+ return false;
comp = comp.getParent();
+ if (comp == this)
+ return true;
}
}
}
while (i.hasNext ())
{
KeyEventPostProcessor processor = (KeyEventPostProcessor) i.next ();
- if (processor.postProcessKeyEvent ((KeyEvent) e))
+ if (processor.postProcessKeyEvent (e))
return true;
}
}
/**
- * Returns an istance of the Desktop Class.
+ * Returns an instance of the Desktop Class.
*
* If this implementation does not support Desktop, an
* UnsupportedOperationException will be thrown.
* @return true if this class is supported on the current platform;
* false otherwise
*/
- private static boolean isDesktopSupported()
+ public static boolean isDesktopSupported()
{
if (GraphicsEnvironment.isHeadless())
return false;
// The ClasspathToolkit-provided peer which implements this font
private transient ClasspathFontPeer peer;
+ /**
+ * The cached hashcode. A value of 0 (default initialized) means that the
+ * hashcode is not computed yet.
+ */
+ private transient int hashCode;
/**
* Creates a <code>Font</code> object from the specified string, which
*/
public int hashCode()
{
- return this.toString().hashCode();
+ // We cache the hashcode. This makes sense, because the font wouldn't
+ // change the relevant properties.
+ if (hashCode == 0)
+ {
+ hashCode = getName().hashCode() ^ getTransform().hashCode() ^ getSize()
+ ^ getStyle();
+ // In the rare case when the above yields 0, we set this to some other
+ // value to avoid recomputing over and over again. This is still
+ // conform to the specification of hashCode().
+ if (hashCode == 0)
+ {
+ hashCode = -1;
+ }
+ }
+ return hashCode;
}
protected GridBagConstraints lookupConstraints (Component component)
{
- GridBagConstraints result = (GridBagConstraints) comptable.get (component);
+ GridBagConstraints result = comptable.get (component);
if (result == null)
{
setConstraints (component, defaultConstraints);
- result = (GridBagConstraints) comptable.get (component);
+ result = comptable.get (component);
}
return result;
private GridBagConstraints lookupInternalConstraints (Component component)
{
- GridBagConstraints result =
- (GridBagConstraints) internalcomptable.get (component);
+ GridBagConstraints result = internalcomptable.get (component);
if (result == null)
{
x = 0;
else
{
- Component lastComponent = (Component) lastInRow.get(new Integer(constraints.gridy));
+ Component lastComponent = lastInRow.get(new Integer(constraints.gridy));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
x = lastConstraints.gridx + Math.max(1, lastConstraints.gridwidth);
}
{
if (lastInRow.containsKey(new Integer(y)))
{
- Component lastComponent = (Component) lastInRow.get(new Integer(y));
+ Component lastComponent = lastInRow.get(new Integer(y));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
x = Math.max (x,
lastConstraints.gridx + Math.max(1, lastConstraints.gridwidth));
}
else
{
- Component lastComponent = (Component)lastInCol.get(new Integer(constraints.gridx));
+ Component lastComponent = lastInCol.get(new Integer(constraints.gridx));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
y = lastConstraints.gridy + Math.max(1, lastConstraints.gridheight);
}
{
if (lastInCol.containsKey(new Integer(x)))
{
- Component lastComponent = (Component) lastInCol.get(new Integer(x));
+ Component lastComponent = lastInCol.get(new Integer(x));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
y = Math.max (y,
lastConstraints.gridy + Math.max(1, lastConstraints.gridheight));
{
if(lastInRow.containsKey(new Integer(y)))
{
- Component lastComponent = (Component) lastInRow.get(new Integer(y));
+ Component lastComponent = lastInRow.get(new Integer(y));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
if (constraints.gridx > lastConstraints.gridx)
{
{
if(lastInCol.containsKey(new Integer(x)))
{
- Component lastComponent = (Component) lastInCol.get(new Integer(x));
+ Component lastComponent = lastInCol.get(new Integer(x));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
if (constraints.gridy > lastConstraints.gridy)
{
{
if (lastInRow.containsKey(new Integer(y)))
{
- Component lastComponent = (Component) lastInRow.get(new Integer(y));
+ Component lastComponent = lastInRow.get(new Integer(y));
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
if (lastConstraints.gridwidth == GridBagConstraints.RELATIVE)
{
if (lastInCol.containsKey(new Integer(x)))
{
- Component lastComponent = (Component) lastInRow.get(new Integer(x));
+ Component lastComponent = lastInRow.get(new Integer(x));
if (lastComponent != null)
{
GridBagConstraints lastConstraints = lookupInternalConstraints(lastComponent);
// STEP 4: Determine sizes and weights for rows.
for (int i = 0; i < sortedByHeight.size(); i++)
{
- Component component = (Component) sortedByHeight.get(i);
+ Component component = sortedByHeight.get(i);
// If component is not visible we dont have to care about it.
if (!component.isVisible())
int i = 0;
if (list.size() > 0)
{
- GridBagConstraints gbc = lookupInternalConstraints((Component) list.get(i));
+ GridBagConstraints gbc = lookupInternalConstraints(list.get(i));
int otherspan = sortByWidth ?
gbc.gridwidth :
gbc.gridheight;
i++;
if (i < list.size())
{
- gbc = lookupInternalConstraints((Component) list.get(i));
+ gbc = lookupInternalConstraints(list.get(i));
otherspan = sortByWidth ?
gbc.gridwidth :
gbc.gridheight;
private void redispatch(MouseEvent ev, Component target, int id)
{
Component source = ev.getComponent();
- if (target != null)
+ assert target != null;
+ if (target.isShowing())
{
// Translate coordinates.
int x = ev.getX();
package java.awt;
-import java.awt.event.KeyEvent;
-
/**
* This class implements a keyboard accelerator for a menu item.
*
System.arraycopy(headerData, 0, data, 0, ProfileHeader.HEADERSIZE);
// read the rest
- if (in.read(data, ProfileHeader.HEADERSIZE,
- header.getSize() - ProfileHeader.HEADERSIZE) != header.getSize()
- - ProfileHeader.HEADERSIZE)
- throw new IOException("Incorrect profile size");
+ int totalBytes = header.getSize() - ProfileHeader.HEADERSIZE;
+ int bytesLeft = totalBytes;
+ while (bytesLeft > 0)
+ {
+ int read = in.read(data,
+ ProfileHeader.HEADERSIZE + (totalBytes - bytesLeft),
+ bytesLeft);
+ bytesLeft -= read;
+ }
return getInstance(data);
}
public InputEvent getTriggerEvent()
{
- return events.size() > 0 ? (InputEvent) events.get(0) : null;
+ return events.size() > 0 ? events.get(0) : null;
}
/**
int x, int y, int clickCount, boolean popupTrigger,
int button)
{
- super(source, id, when, modifiers);
-
- this.x = x;
- this.y = y;
- this.clickCount = clickCount;
- this.popupTrigger = popupTrigger;
- this.button = button;
- if (button < NOBUTTON || button > BUTTON3)
- throw new IllegalArgumentException();
- if ((modifiers & EventModifier.OLD_MASK) != 0)
- {
- if ((modifiers & BUTTON1_MASK) != 0)
- this.button = BUTTON1;
- else if ((modifiers & BUTTON2_MASK) != 0)
- this.button = BUTTON2;
- else if ((modifiers & BUTTON3_MASK) != 0)
- this.button = BUTTON3;
- }
- // clear the mouse button modifier masks if this is a button
- // release event.
- if (id == MOUSE_RELEASED)
- this.modifiersEx &= ~(BUTTON1_DOWN_MASK
- | BUTTON2_DOWN_MASK
- | BUTTON3_DOWN_MASK);
-
- if (source != null)
- {
- Point screenLoc = source.getLocationOnScreen();
- absX = screenLoc.x + x;
- absY = screenLoc.y + y;
- }
+ this(source, id, when, modifiers, x, y, 0, 0, clickCount, popupTrigger,
+ button);
}
/**
package java.awt.font;
import java.text.AttributedCharacterIterator;
-import java.text.AttributedString;
import java.text.BreakIterator;
-import java.awt.Shape;
public final class LineBreakMeasurer
{
package java.awt.font;
import java.text.AttributedCharacterIterator;
-import java.text.AttributedString;
import java.awt.Shape;
/**
width = (float) r.getWidth();
height = (float) r.getHeight();
this.start = start;
- this.extent = (float) extent;
+ this.extent = extent;
}
/**
*/
public Rectangle2D getBounds2D()
{
- float nx1 = (float) Math.min(Math.min(x1, ctrlx1), Math.min(ctrlx2, x2));
- float ny1 = (float) Math.min(Math.min(y1, ctrly1), Math.min(ctrly2, y2));
- float nx2 = (float) Math.max(Math.max(x1, ctrlx1), Math.max(ctrlx2, x2));
- float ny2 = (float) Math.max(Math.max(y1, ctrly1), Math.max(ctrly2, y2));
+ float nx1 = Math.min(Math.min(x1, ctrlx1), Math.min(ctrlx2, x2));
+ float ny1 = Math.min(Math.min(y1, ctrly1), Math.min(ctrly2, y2));
+ float nx2 = Math.max(Math.max(x1, ctrlx1), Math.max(ctrlx2, x2));
+ float ny2 = Math.max(Math.max(y1, ctrly1), Math.max(ctrly2, y2));
return new Rectangle2D.Float(nx1, ny1, nx2 - nx1, ny2 - ny1);
}
}
*/
public Rectangle2D getBounds2D()
{
- float nx1 = (float) Math.min(Math.min(x1, ctrlx), x2);
- float ny1 = (float) Math.min(Math.min(y1, ctrly), y2);
- float nx2 = (float) Math.max(Math.max(x1, ctrlx), x2);
- float ny2 = (float) Math.max(Math.max(y1, ctrly), y2);
+ float nx1 = Math.min(Math.min(x1, ctrlx), x2);
+ float ny1 = Math.min(Math.min(y1, ctrly), y2);
+ float nx2 = Math.max(Math.max(x1, ctrlx), x2);
+ float ny2 = Math.max(Math.max(y1, ctrly), y2);
return new Rectangle2D.Float(nx1, ny1, nx2 - nx1, ny2 - ny1);
}
}
recent.put(locale, im);
return true;
}
- InputMethod next = (InputMethod) recent.get(locale);
- outer:
+ InputMethod next = recent.get(locale);
if (next != null)
for (int i = 0, limit = descriptors.size(); i < limit; i++)
{
- InputMethodDescriptor d = (InputMethodDescriptor) descriptors.get(i);
+ InputMethodDescriptor d = descriptors.get(i);
Locale[] list;
try
{
if (dst == null)
dst = createCompatibleDestImage(src, null);
- Graphics2D gr = (Graphics2D) dst.createGraphics();
+ Graphics2D gr = dst.createGraphics();
gr.setRenderingHints(hints);
gr.drawImage(src, transform, null);
return dst;
* @param srcOffset - Starting offset into the source pixel data array.
* @param srcScansize - Source array scanline size.
* @param rx,ry - Scaling factor.
- * @param dstScansize - Destination array scanline size.
+ * @param destScansize - Destination array scanline size.
*/
private byte[] averagePixels(int srcx, int srcy, int srcw, int srch,
ColorModel model, byte[] srcPixels,
* @param srcOffset - Starting offset into the source pixel data array.
* @param srcScansize - Source array scanline size.
* @param rx,ry - Scaling factor.
- * @param dstScansize - Destination array scanline size.
+ * @param destScansize - Destination array scanline size.
*/
private int[] averagePixels(int srcx, int srcy, int srcw, int srch,
ColorModel model, int[] srcPixels,
import gnu.java.awt.Buffers;
import gnu.java.awt.ClasspathGraphicsEnvironment;
import gnu.java.awt.ComponentDataBlitOp;
-import gnu.java.awt.peer.gtk.CairoSurface;
-
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
*/
public SampleModel createCompatibleSampleModel(int width, int height)
{
+ // Find minimum band offset.
+ int minBandoff = bandOffsets[0];
+ int numBands = bandOffsets.length;
+ for (int i = 1; i < numBands; i++)
+ {
+ if (bandOffsets[i] < minBandoff)
+ {
+ minBandoff = bandOffsets[i];
+ }
+ }
+ // Adjust band offsets so that minimum offset is at 0.
+ int[] bandOff;
+ if (minBandoff > 0)
+ {
+ bandOff = new int[numBands];
+ for (int i = 0; i < numBands; i++)
+ {
+ bandOff[i] = bandOffsets[i] - minBandoff;
+ }
+ }
+ else
+ {
+ bandOff = bandOffsets;
+ }
+ // Adjust scanline stride for new width.
return new PixelInterleavedSampleModel(dataType, width, height,
- pixelStride, scanlineStride,
- bandOffsets);
+ pixelStride, pixelStride * width,
+ bandOff);
}
{
for (int xp = 0; xp < w; xp++)
{
- filtered[xp] = model.getRGB((pixels[index] & 0xff));
+ filtered[xp] = model.getRGB((pixels[index]));
index++;
}
index += scansize - w;
Point location)
{
SampleModel sm = new ComponentSampleModel(dataBuffer.getDataType(),
- w, h, scanlineStride, pixelStride, bandOffsets);
+ w, h, pixelStride, scanlineStride, bandOffsets);
return createWritableRaster(sm, dataBuffer, location);
}
* Objects.
*
* @param bean the Bean to cast.
- * @param newClass the Class to cast it to.
+ * @param newBeanClass the Class to cast it to.
*
* @return whether the Bean can be cast to the class type
* in question.
{
Method readMethod = propertyDescs[i].getReadMethod();
- args[i] = readMethod.invoke(oldInstance, null);
+ args[i] = readMethod.invoke(oldInstance);
}
}
}
if (readMethod != null && writeMethod != null)
{
- Object oldValue = readMethod.invoke(oldInstance, null);
+ Object oldValue = readMethod.invoke(oldInstance);
if (oldValue != null)
out.writeStatement(new Statement(oldInstance,
PersistenceDelegate pd = (PersistenceDelegate) delegates.get(type);
- return (pd != null) ? pd : (PersistenceDelegate) defaultPersistenceDelegate;
+ return (pd != null) ? pd : defaultPersistenceDelegate;
}
/**
try
{
// Look for boolean property getter isProperty
- getter = o.getClass().getMethod("is" + capitalize(prop),
- null);
+ getter = o.getClass().getMethod("is" + capitalize(prop));
}
catch (NoSuchMethodException nsme1)
{
try {
// Look for regular property getter getProperty
- getter = o.getClass().getMethod("get" + capitalize(prop),
- null);
+ getter = o.getClass().getMethod("get" + capitalize(prop));
} catch(NoSuchMethodException nsme2) {
try {
// Finally look for a method of the name prop
- getter = o.getClass().getMethod(prop, null);
+ getter = o.getClass().getMethod(prop);
} catch(NoSuchMethodException nsme3) {
// Ok, give up with an intelligent hint for the user.
throw new RuntimeException("Method not called: Could not find a property or method '" + prop
}
}
try {
- Object val = getter.invoke(o, null);
+ Object val = getter.invoke(o);
if (rest != null)
return getProperty(val, rest);
// more specification compliant than the JDK itself because this one will fail in such a case.
try
{
- actionMethod = targetClass.getMethod(action, null);
+ actionMethod = targetClass.getMethod(action);
}
catch(NoSuchMethodException nsme)
{
throw new ArrayIndexOutOfBoundsException(0);
// Invoke target.action(property)
- return actionMethod.invoke(target, null);
+ return actionMethod.invoke(target);
} catch(InvocationTargetException ite) {
throw new RuntimeException(ite.getCause());
} catch(IllegalAccessException iae) {
{
if (oldVal != newVal)
firePropertyChange(new PropertyChangeEvent(source, propertyName,
- new Integer(oldVal),
- new Integer(newVal)));
+ Integer.valueOf(oldVal),
+ Integer.valueOf(newVal)));
}
/**
{
if (oldVal != newVal)
fireVetoableChange(new PropertyChangeEvent(source, propertyName,
- new Integer(oldVal),
- new Integer(newVal)));
+ Integer.valueOf(oldVal),
+ Integer.valueOf(newVal)));
}
/**
*
* @param in InputStream to read XML data from.
* @param owner Owner object which can be accessed and modified while parsing.
- * @param exceptionListener ExceptionListener instance to which exception notifications are send.
+ * @param listener ExceptionListener instance to which exception notifications are send.
* @param cl ClassLoader instance that is used for calls to <code>Class.forName(String, boolean, ClassLoader)</code>
* @since 1.5
*/
package java.beans.beancontext;
-import gnu.classpath.NotImplementedException;
-
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
private BeanContextServiceProvider provider;
- private BCSSProxyServiceProvider(BeanContextServiceProvider p)
- {
- provider = p;
- }
-
public Iterator getCurrentServiceSelectors (BeanContextServices bcs,
Class serviceClass)
{
* Subclasses may envelope its behaviour in order to read further
* serialized data to the stream.
*
- * @param oos the stream from which data is being deserialized.
+ * @param ois the stream from which data is being deserialized.
* @throws IOException if an I/O error occurs.
* @throws ClassNotFoundException if the class of a deserialized object
* can not be found.
}
/**
- * Deerializes the children using the
+ * Deserializes the children using the
* {@link #deserialize(ObjectInputStream, Collection} method
* and then calls {@link childDeserializedHook(Object, BCSChild)}
* for each child deserialized.
*
- * @param oos the output stream.
+ * @param ois the input stream.
* @throws IOException if an I/O error occurs.
*/
public final void readChildren (ObjectInputStream ois)
// This is package-private because it is used by LineNumberReader.
static final int DEFAULT_BUFFER_SIZE = 8192;
- /**
- * The line buffer for <code>readLine</code>.
- */
- private StringBuffer sbuf = null;
-
/**
* Create a new <code>BufferedReader</code> that will read from the
* specified subordinate stream with a default buffer size of 8192 chars.
pos++;
return str;
}
- if (sbuf == null)
- sbuf = new StringBuffer(200);
- else
- sbuf.setLength(0);
+ StringBuilder sbuf = new StringBuilder(200);
sbuf.append(buffer, pos, i - pos);
pos = i;
// We only want to return null when no characters were read before
* sequence is wrapped around an input buffer, the results will
* depend on the current position and length of that buffer.
*
- * @param seq the character sequence to append. If seq is null,
+ * @param cs the character sequence to append. If seq is null,
* then the string "null" (the string representation of null)
* is appended.
* @return a reference to this object.
* <code>append(seq.subSequence(start,end))</code> when the sequence
* is not null.
*
- * @param seq the character sequence to append. If seq is null,
+ * @param cs the character sequence to append. If seq is null,
* then the string "null" (the string representation of null)
* is appended.
* @param start the index of the first Unicode character to use from
/* DataInputStream.java -- FilteredInputStream that implements DataInput
- Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005 Free Software Foundation
+ Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2008
+ Free Software Foundation
This file is part of GNU Classpath.
*/
public final String readLine() throws IOException
{
- StringBuffer strb = new StringBuffer();
+ StringBuilder strb = new StringBuilder();
while (true)
{
public static final String readUTF(DataInput in) throws IOException
{
final int UTFlen = in.readUnsignedShort ();
- byte[] buf = new byte [UTFlen];
+
+ return readUTF(in, UTFlen);
+ }
+
+ /**
+ * This method is similar to <code>readUTF</code>, but the
+ * UTF-8 byte length is in 64 bits.
+ * This method is not public. It is used by <code>ObjectInputStream</code>.
+ *
+ * @return The <code>String</code> read
+ *
+ * @exception EOFException If end of file is reached before reading
+ * the String
+ * @exception UTFDataFormatException If the data is not in UTF-8 format
+ * @exception IOException If any other error occurs
+ *
+ * @see DataOutput#writeUTFLong
+ */
+ final String readUTFLong () throws IOException
+ {
+ long l = readLong ();
+ if (l > Integer.MAX_VALUE)
+ throw new IOException("The string length > Integer.MAX_VALUE");
+ final int UTFlen = (int)l;
+ return readUTF (this, UTFlen);
+ }
+
+ /**
+ * This method performs the main task of <code>readUTF</code> and
+ * <code>readUTFLong</code>.
+ *
+ * @param in The <code>DataInput</code> source to read from
+ *
+ * @param len The UTF-8 byte length of the String to be read
+ *
+ * @return The String read from the source
+ *
+ * @exception IOException If an error occurs
+ *
+ * @see DataInput#readUTF
+ */
+ private static final String readUTF(DataInput in, int len) throws IOException
+ {
+ byte[] buf = new byte [len];
// This blocks until the entire string is available rather than
// doing partial processing on the bytes that are available and then
// blocking. An advantage of the latter is that Exceptions
// could be thrown earlier. The former is a bit cleaner.
- in.readFully (buf, 0, UTFlen);
+ in.readFully (buf, 0, len);
return convertFromUTF (buf);
}
{
// Give StringBuffer an initial estimated size to avoid
// enlarge buffer frequently
- StringBuffer strbuf = new StringBuffer (buf.length / 2 + 2);
+ StringBuilder strbuf = new StringBuilder (buf.length / 2 + 2);
for (int i = 0; i < buf.length; )
{
/* DataOutputStream.java -- Writes primitive Java datatypes to streams
- Copyright (C) 1998, 2001, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
This file is part of GNU Classpath.
/**
* Calculate the length, in bytes, of a <code>String</code> in Utf8 format.
+ * This method is package-private so that <code>ObjectOutputStream</code>
+ * may use it. The return type is long so that a long string whose
+ * Utf8 byte count is 64 bit long may be handled.
*
* @param value The <code>String</code> to measure
* @param start String index at which to begin count
* @param sum Starting Utf8 byte count
*
- * @throws UTFDataFormatException if result would exceed 65535
*/
- private int getUTFlength(String value, int start, int sum)
- throws IOException
+ long getUTFlength(String value, int start, long sum)
{
int len = value.length();
- for (int i = start; i < len && sum <= 65535; ++i)
+ for (int i = start; i < len; ++i)
{
char c = value.charAt(i);
if (c >= '\u0001' && c <= '\u007f')
sum += 3;
}
- if (sum > 65535)
- throw new UTFDataFormatException ();
-
return sum;
}
* @see DataInput#readUTF
*/
public final synchronized void writeUTF(String value) throws IOException
+ {
+ long l = getUTFlength(value, 0, 0);
+ if (l > 65535)
+ throw new UTFDataFormatException ();
+ writeUTFShort(value, (int)l);
+ }
+
+ /**
+ * This method performs the main task of <code>writeUTF</code>.
+ * This method is package-private because ObjectOutputStream uses it.
+ *
+ * @param value The <code>String</code> to write to the output in UTF format
+ *
+ * @param bytelen The UTF-8 byte length of the <code>String</code>. When
+ * this method is called, the expected byte length must have been calculated
+ * by <code>getUTFlength</code>.
+ *
+ * @exception IOException If an error occurs
+ *
+ * @see DataInput#readUTF
+ */
+ final synchronized void writeUTFShort(String value, int bytelen)
+ throws IOException
+ {
+ writeShort(bytelen);
+ writeUTFBytes(value);
+ }
+
+ /**
+ * This method is similar to <code>writeUTF</code>, but it writes the
+ * UTF-8 byte length in 64 bits.
+ * This method is not public but <code>ObjectOutputStream</code> uses it.
+ *
+ * @param value The <code>String</code> to write to the output in UTF format
+ *
+ * @param bytelen The UTF-8 byte length of the <code>String</code>. When
+ * this method is called, the expected byte length must have been calculated
+ * by <code>getUTFlength</code>.
+ *
+ * @exception IOException If an error occurs
+ *
+ */
+ final synchronized void writeUTFLong(String value, long bytelen)
+ throws IOException
+ {
+ writeLong(bytelen);
+ writeUTFBytes(value);
+ }
+
+ /**
+ * This method performes the main task of <code>writeUTF</code> and
+ * <code>WriteUTFLong</code>, which is to write the UTF-8 byte
+ * sequence to the output.
+ *
+ * @param value The <code>String</code> to write to the output in UTF format
+ *
+ * @exception IOException If an error occurs
+ *
+ */
+ private final synchronized void writeUTFBytes(String value)
+ throws IOException
{
int len = value.length();
int i = 0;
int pos = 0;
- boolean lengthWritten = false;
if (buf == null)
buf = new byte[512];
buf[pos++] = (byte) (0x80 | (0x3f & c));
}
}
- if (! lengthWritten)
- {
- if (i == len)
- writeShort(pos);
- else
- writeShort(getUTFlength(value, i, pos));
- lengthWritten = true;
- }
write(buf, 0, pos);
pos = 0;
}
return VMFile.setExecutable(path, executable, ownerOnly);
}
+ /**
+ * Get the total space for the partition pointed by this file path, in bytes.
+ *
+ * @return the total number of bytes in this partition.
+ * @since 1.6
+ */
+ public long getTotalSpace()
+ {
+ // check security manager.
+ SecurityManager s = System.getSecurityManager();
+ if (s != null)
+ s.checkPermission(new RuntimePermission("getFileSystemAttributes"));
+ checkRead();
+
+ return VMFile.getTotalSpace(path);
+ }
+
+ /**
+ * Get the free space in the partition pointed by this file path, in bytes.
+ *
+ * @return the number of free bytes in this partition.
+ * @since 1.6
+ */
+ public long getFreeSpace()
+ {
+ // check security manager.
+ SecurityManager s = System.getSecurityManager();
+ if (s != null)
+ s.checkPermission(new RuntimePermission("getFileSystemAttributes"));
+ checkRead();
+
+ return VMFile.getFreeSpace(path);
+ }
+
+ /**
+ * Get the usable space in the partition pointed by this file path, in bytes.
+ * This is not necessarily the same as the number returned by
+ * {@link #getFreeSpace()}.
+ *
+ * <strong>Implementation note</strong>: Unlike the RI, on Linux and UNIX
+ * like systems this methods take into account the reserved space for the
+ * "root" user. This means that the returned results will be a little
+ * different if a normal user or root perform the query.
+ *
+ * Also, the bytes returned should be interpreted as an hint, and may be
+ * different at each call of this method or even right after the method
+ * returns.
+ *
+ * @return the number of usable bytes in this partition.
+ * @since 1.6
+ */
+ public long getUsableSpace()
+ {
+ // check security manager.
+ SecurityManager s = System.getSecurityManager();
+ if (s != null)
+ s.checkPermission(new RuntimePermission("getFileSystemAttributes"));
+ checkRead();
+
+ // root users can use the reserved extra space
+ String user = System.getProperty("user.name");
+ if (user != null && user.equals("root"))
+ return VMFile.getFreeSpace(path);
+
+ return VMFile.getUsableSpace(path);
+ }
+
/**
* This method sets the file represented by this object to be read only.
* A read only file or directory cannot be modified. Please note that
{
private FileDescriptor fd;
- private FileChannelImpl ch;
+ private final FileChannelImpl ch;
/**
* This method initializes a <code>FileOutputStream</code> object to write
/* ObjectInputStream.java -- Class used to read serialized objects
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2008
Free Software Foundation, Inc.
This file is part of GNU Classpath.
}
case TC_STRING:
- case TC_LONGSTRING:
{
if(dump) dumpElement("STRING=");
String s = this.realInputStream.readUTF();
break;
}
+ case TC_LONGSTRING:
+ {
+ if(dump) dumpElement("STRING=");
+ String s = this.realInputStream.readUTFLong();
+ if(dump) dumpElementln(s);
+ ret_val = processResolution(null, s, assignNewHandle(s,shared),
+ shared);
+ break;
+ }
+
case TC_ARRAY:
{
if(dump) dumpElementln("ARRAY");
return null;
ObjectStreamClass oclazz;
- oclazz = (ObjectStreamClass)classLookupTable.get(clazz);
+ oclazz = classLookupTable.get(clazz);
if (oclazz == null)
return ObjectStreamClass.lookup(clazz);
else
/* ObjectOutputStream.java -- Class used to write serialized objects
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008
Free Software Foundation, Inc.
This file is part of GNU Classpath.
if (obj instanceof String)
{
- realOutput.writeByte(TC_STRING);
- if (shared)
- assignNewHandle(obj);
- realOutput.writeUTF((String)obj);
+ String s = (String)obj;
+ long l = realOutput.getUTFlength(s, 0, 0);
+ if (l <= 65535)
+ {
+ realOutput.writeByte(TC_STRING);
+ if (shared)
+ assignNewHandle(obj);
+ realOutput.writeUTFShort(s, (int)l);
+ }
+ else
+ {
+ realOutput.writeByte(TC_LONGSTRING);
+ if (shared)
+ assignNewHandle(obj);
+ realOutput.writeUTFLong(s, l);
+ }
break;
}
if (cl == null)
return null;
- ObjectStreamClass osc = (ObjectStreamClass) classLookupTable.get(cl);
+ ObjectStreamClass osc = classLookupTable.get(cl);
if (osc != null)
return osc;
}
if (loadedByBootOrApplicationClassLoader(cl))
- uidCache.put(cl,new Long(result));
+ uidCache.put(cl,Long.valueOf(result));
}
return result;
}
try
{
- return (Externalizable)constructor.newInstance(null);
+ return (Externalizable)constructor.newInstance();
}
catch(Exception x)
{
/**
* The charset encoder.
*/
- private CharsetEncoder encoder;
+ private final CharsetEncoder encoder;
/**
* java.io canonical name of the encoding.
*/
- private String encodingName;
+ private final String encodingName;
/**
* Buffer output before character conversion as it has costly overhead.
*/
- private CharBuffer outputBuffer;
+ private final CharBuffer outputBuffer;
private final static int BUFFER_SIZE = 1024;
/**
public OutputStreamWriter (OutputStream out, String encoding_scheme)
throws UnsupportedEncodingException
{
+ CharsetEncoder encoder;
+ String encodingName;
this.out = out;
+ outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
+
try
{
// Don't use NIO if avoidable
{
encodingName = "ISO8859_1";
encoder = null;
- return;
- }
-
- /*
- * Workraround for encodings with a byte-order-mark.
- * We only want to write it once per stream.
- */
- try
- {
- if(encoding_scheme.equalsIgnoreCase("UnicodeBig") ||
- encoding_scheme.equalsIgnoreCase("UTF-16") ||
- encoding_scheme.equalsIgnoreCase("UTF16"))
- {
- encoding_scheme = "UTF-16BE";
- out.write((byte)0xFE);
- out.write((byte)0xFF);
- }
- else if(encoding_scheme.equalsIgnoreCase("UnicodeLittle")){
- encoding_scheme = "UTF-16LE";
- out.write((byte)0xFF);
- out.write((byte)0xFE);
- }
- }
- catch(IOException ioe)
- {
}
-
- outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
-
- Charset cs = EncodingHelper.getCharset(encoding_scheme);
- if(cs == null)
- throw new UnsupportedEncodingException("Encoding "+encoding_scheme+
- " unknown");
- encoder = cs.newEncoder();
- encodingName = EncodingHelper.getOldCanonical(cs.name());
-
- encoder.onMalformedInput(CodingErrorAction.REPLACE);
- encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+ else
+ {
+ /*
+ * Workaround for encodings with a byte-order-mark.
+ * We only want to write it once per stream.
+ */
+ try
+ {
+ if(encoding_scheme.equalsIgnoreCase("UnicodeBig") ||
+ encoding_scheme.equalsIgnoreCase("UTF-16") ||
+ encoding_scheme.equalsIgnoreCase("UTF16"))
+ {
+ encoding_scheme = "UTF-16BE";
+ out.write((byte)0xFE);
+ out.write((byte)0xFF);
+ }
+ else if(encoding_scheme.equalsIgnoreCase("UnicodeLittle"))
+ {
+ encoding_scheme = "UTF-16LE";
+ out.write((byte)0xFF);
+ out.write((byte)0xFE);
+ }
+ }
+ catch(IOException ioe)
+ {
+ }
+
+ Charset cs = EncodingHelper.getCharset(encoding_scheme);
+ if(cs == null)
+ throw new UnsupportedEncodingException("Encoding "+encoding_scheme+
+ " unknown");
+ encoder = cs.newEncoder();
+ encodingName = EncodingHelper.getOldCanonical(cs.name());
+
+ encoder.onMalformedInput(CodingErrorAction.REPLACE);
+ encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+ }
}
catch(RuntimeException e)
{
encoder = null;
encodingName = "ISO8859_1";
}
+ this.encoder = encoder;
+ this.encodingName = encodingName;
}
/**
*/
public OutputStreamWriter (OutputStream out)
{
+ CharsetEncoder encoder;
+ String encodingName;
this.out = out;
- outputBuffer = null;
+ outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
try
{
String encoding = System.getProperty("file.encoding");
{
encoder.onMalformedInput(CodingErrorAction.REPLACE);
encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
- outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
}
+ this.encoder = encoder;
+ this.encodingName = encodingName;
}
/**
{
byte[] b = new byte[count];
for(int i=0;i<count;i++)
- b[i] = (byte)((buf[offset+i] <= 0xFF)?buf[offset+i]:'?');
+ b[i] = nullConversion(buf[offset+i]);
out.write(b);
} else {
try {
}
}
+ private byte nullConversion(char c) {
+ return (byte)((c <= 0xFF)?c:'?');
+ }
+
/**
* This method writes <code>count</code> bytes from the specified
* <code>String</code> starting at position <code>offset</code> into the
*/
public void write (int ch) throws IOException
{
- write(new char[]{ (char)ch }, 0, 1);
+ // No buffering, no encoding ... just pass through
+ if (encoder == null && outputBuffer == null) {
+ out.write(nullConversion((char)ch));
+ } else {
+ if (outputBuffer != null) {
+ if (outputBuffer.remaining() == 0) {
+ writeConvert(outputBuffer.array(), 0, BUFFER_SIZE);
+ outputBuffer.clear();
+ }
+ outputBuffer.put((char)ch);
+ } else {
+ writeConvert(new char[]{ (char)ch }, 0, 1);
+ }
+ }
}
} // class OutputStreamWriter
* This is the internal circular buffer used for storing bytes written
* to the pipe and from which bytes are read by this stream
*/
- protected byte[] buffer = new byte[PIPE_SIZE];
+ protected byte[] buffer = null;
/**
* The index into buffer where the next byte from the connected
*/
public PipedInputStream()
{
+ this(PIPE_SIZE);
}
+ /**
+ * Creates a new <code>PipedInputStream</code> of the given size that is not
+ * connected to a <code>PipedOutputStream</code>.
+ * It must be connected before bytes can be read from this stream.
+ *
+ * @since 1.6
+ * @since IllegalArgumentException If pipeSize <= 0.
+ */
+ public PipedInputStream(int pipeSize) throws IllegalArgumentException
+ {
+ if (pipeSize <= 0)
+ throw new IllegalArgumentException("pipeSize must be > 0");
+
+ this.buffer = new byte[pipeSize];
+ }
+
/**
* This constructor creates a new <code>PipedInputStream</code> and connects
* it to the passed in <code>PipedOutputStream</code>. The stream is then
*/
public PipedInputStream(PipedOutputStream source) throws IOException
{
+ this();
connect(source);
}
+ /**
+ * This constructor creates a new <code>PipedInputStream</code> of the given
+ * size and connects it to the passed in <code>PipedOutputStream</code>.
+ * The stream is then ready for reading.
+ *
+ * @param source The <code>PipedOutputStream</code> to connect this
+ * stream to
+ *
+ * @since 1.6
+ * @exception IOException If <code>source</code> is already connected.
+ */
+ public PipedInputStream(PipedOutputStream source, int pipeSize)
+ throws IOException
+ {
+ this(pipeSize);
+ connect(source);
+ }
+
/**
* This method connects this stream to the passed in
* <code>PipedOutputStream</code>.
/**
* Encoding name
*/
- private String encoding;
+ private final String encoding;
/**
* This boolean indicates whether or not an error has ever occurred
* This is <code>true</code> if auto-flush is enabled,
* <code>false</code> otherwise
*/
- private boolean auto_flush;
+ private final boolean auto_flush;
/**
* This method initializes a new <code>PrintStream</code> object to write
public PrintStream (OutputStream out, boolean auto_flush)
{
super (out);
-
+ String encoding;
try {
- this.encoding = SystemProperties.getProperty("file.encoding");
+ encoding = SystemProperties.getProperty("file.encoding");
} catch (SecurityException e){
- this.encoding = "ISO8859_1";
+ encoding = "ISO8859_1";
} catch (IllegalArgumentException e){
- this.encoding = "ISO8859_1";
+ encoding = "ISO8859_1";
} catch (NullPointerException e){
- this.encoding = "ISO8859_1";
+ encoding = "ISO8859_1";
}
+ this.encoding = encoding;
this.auto_flush = auto_flush;
}
/* Class.java -- Representation of a Java class.
- Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+ Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation
This file is part of GNU Classpath.
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
/**
*/
private Field[] internalGetFields()
{
- HashSet<Field> set = new HashSet<Field>();
+ LinkedHashSet<Field> set = new LinkedHashSet<Field>();
set.addAll(Arrays.asList(getDeclaredFields(true)));
Class[] interfaces = getInterfaces();
for (int i = 0; i < interfaces.length; i++)
}
try
{
- return constructor.newInstance(null);
+ return constructor.newInstance();
}
catch (InvocationTargetException e)
{
*/
public static long doubleToLongBits(double value)
{
- return VMDouble.doubleToLongBits(value);
+ if (isNaN(value))
+ return 0x7ff8000000000000L;
+ else
+ return VMDouble.doubleToRawLongBits(value);
}
/**
*/
public static int compare(double x, double y)
{
- if (isNaN(x))
- return isNaN(y) ? 0 : 1;
- if (isNaN(y))
- return -1;
- // recall that 0.0 == -0.0, so we convert to infinites and try again
- if (x == 0 && y == 0)
- return (int) (1 / x - 1 / y);
- if (x == y)
- return 0;
-
- return x > y ? 1 : -1;
+ // handle the easy cases:
+ if (x < y)
+ return -1;
+ if (x > y)
+ return 1;
+
+ // handle equality respecting that 0.0 != -0.0 (hence not using x == y):
+ long lx = doubleToRawLongBits(x);
+ long ly = doubleToRawLongBits(y);
+ if (lx == ly)
+ return 0;
+
+ // handle NaNs:
+ if (x != x)
+ return (y != y) ? 0 : 1;
+ else if (y != y)
+ return -1;
+
+ // handle +/- 0.0
+ return (lx < ly) ? -1 : 1;
}
}
*/
public static int floatToIntBits(float value)
{
- return VMFloat.floatToIntBits(value);
+ if (isNaN(value))
+ return 0x7fc00000;
+ else
+ return VMFloat.floatToRawIntBits(value);
}
/**
*/
public static int compare(float x, float y)
{
- if (isNaN(x))
- return isNaN(y) ? 0 : 1;
- if (isNaN(y))
- return -1;
- // recall that 0.0 == -0.0, so we convert to infinities and try again
- if (x == 0 && y == 0)
- return (int) (1 / x - 1 / y);
- if (x == y)
- return 0;
-
- return x > y ? 1 : -1;
+ // handle the easy cases:
+ if (x < y)
+ return -1;
+ if (x > y)
+ return 1;
+
+ // handle equality respecting that 0.0 != -0.0 (hence not using x == y):
+ int ix = floatToRawIntBits(x);
+ int iy = floatToRawIntBits(y);
+ if (ix == iy)
+ return 0;
+
+ // handle NaNs:
+ if (x != x)
+ return (y != y) ? 0 : 1;
+ else if (y != y)
+ return -1;
+
+ // handle +/- 0.0
+ return (ix < iy) ? -1 : 1;
}
}
if (len == 0)
throw new NumberFormatException("string length is null");
int ch = str.charAt(index);
- if (ch == '-' || ch == '+')
+ if (ch == '-')
{
if (len == 1)
- if (ch == '-')
- throw new NumberFormatException("pure '-'");
- else if (ch == '+')
- throw new NumberFormatException("pure '+'");
+ throw new NumberFormatException("pure '-'");
isNeg = true;
ch = str.charAt(++index);
}
+ else if (ch == '+')
+ {
+ if (len == 1)
+ throw new NumberFormatException("pure '+'");
+ ch = str.charAt(++index);
+ }
if (decode)
{
if (ch == '0')
* @return the <code>Long</code>
* @since 1.5
*/
- public static synchronized Long valueOf(long val)
+ public static Long valueOf(long val)
{
// We aren't required to cache here. We could, though perhaps we
// ought to consider that as an empirical question.
*/
public String toString()
{
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
if (declaringClass != null)
{
sb.append(declaringClass);
break;
if (i < 0)
return this;
- char[] newStr = (char[]) value.clone();
- newStr[x] = newChar;
+ char[] newStr = toCharArray();
+ newStr[x - offset] = newChar;
while (--i >= 0)
if (value[++x] == oldChar)
- newStr[x] = newChar;
+ newStr[x - offset] = newChar;
// Package constructor avoids an array copy.
- return new String(newStr, offset, count, true);
+ return new String(newStr, 0, count, true);
}
/**
}
/**
- * Lowercases this String according to a particular locale. This uses
- * Unicode's special case mappings, as applied to the given Locale, so the
- * resulting string may be a different length.
- *
- * @param loc locale to use
- * @return new lowercased String, or this if no characters were lowercased
- * @throws NullPointerException if loc is null
- * @see #toUpperCase(Locale)
- * @since 1.1
+ * Convert string to lower case for a Turkish locale that requires special
+ * handling of '\u0049'
*/
- public String toLowerCase(Locale loc)
+ private String toLowerCaseTurkish()
{
// First, see if the current string is already lower case.
- boolean turkish = "tr".equals(loc.getLanguage());
int i = count;
int x = offset - 1;
while (--i >= 0)
{
char ch = value[++x];
- if ((turkish && ch == '\u0049')
- || ch != Character.toLowerCase(ch))
+ if ((ch == '\u0049') || ch != Character.toLowerCase(ch))
break;
}
if (i < 0)
// Now we perform the conversion. Fortunately, there are no multi-character
// lowercase expansions in Unicode 3.0.0.
- char[] newStr = (char[]) value.clone();
+ char[] newStr = new char[count];
+ VMSystem.arraycopy(value, offset, newStr, 0, x - offset);
do
{
char ch = value[x];
// Hardcoded special case.
- newStr[x++] = (turkish && ch == '\u0049') ? '\u0131'
- : Character.toLowerCase(ch);
+ if (ch != '\u0049')
+ {
+ newStr[x - offset] = Character.toLowerCase(ch);
+ }
+ else
+ {
+ newStr[x - offset] = '\u0131';
+ }
+ x++;
}
while (--i >= 0);
// Package constructor avoids an array copy.
- return new String(newStr, offset, count, true);
+ return new String(newStr, 0, count, true);
+ }
+
+ /**
+ * Lowercases this String according to a particular locale. This uses
+ * Unicode's special case mappings, as applied to the given Locale, so the
+ * resulting string may be a different length.
+ *
+ * @param loc locale to use
+ * @return new lowercased String, or this if no characters were lowercased
+ * @throws NullPointerException if loc is null
+ * @see #toUpperCase(Locale)
+ * @since 1.1
+ */
+ public String toLowerCase(Locale loc)
+ {
+ // First, see if the current string is already lower case.
+
+ // Is loc turkish? String equality test is ok as Locale.language is interned
+ if ("tr" == loc.getLanguage())
+ {
+ return toLowerCaseTurkish();
+ }
+ else
+ {
+ int i = count;
+ int x = offset - 1;
+ while (--i >= 0)
+ {
+ char ch = value[++x];
+ if (ch != Character.toLowerCase(ch))
+ break;
+ }
+ if (i < 0)
+ return this;
+
+ // Now we perform the conversion. Fortunately, there are no
+ // multi-character lowercase expansions in Unicode 3.0.0.
+ char[] newStr = new char[count];
+ VMSystem.arraycopy(value, offset, newStr, 0, x - offset);
+ do
+ {
+ char ch = value[x];
+ // Hardcoded special case.
+ newStr[x - offset] = Character.toLowerCase(ch);
+ x++;
+ }
+ while (--i >= 0);
+ // Package constructor avoids an array copy.
+ return new String(newStr, 0, count, true);
+ }
}
/**
}
/**
- * Uppercases this String according to a particular locale. This uses
- * Unicode's special case mappings, as applied to the given Locale, so the
- * resulting string may be a different length.
- *
- * @param loc locale to use
- * @return new uppercased String, or this if no characters were uppercased
- * @throws NullPointerException if loc is null
- * @see #toLowerCase(Locale)
- * @since 1.1
+ * Uppercase this string for a Turkish locale
*/
- public String toUpperCase(Locale loc)
+ private String toUpperCaseTurkish()
{
// First, see how many characters we have to grow by, as well as if the
// current string is already upper case.
- boolean turkish = "tr".equals(loc.getLanguage());
int expand = 0;
boolean unchanged = true;
int i = count;
char ch = value[--x];
expand += upperCaseExpansion(ch);
unchanged = (unchanged && expand == 0
- && ! (turkish && ch == '\u0069')
+ && ch != '\u0069'
&& ch == Character.toUpperCase(ch));
}
if (unchanged)
i = count;
if (expand == 0)
{
- char[] newStr = (char[]) value.clone();
+ char[] newStr = new char[count];
+ VMSystem.arraycopy(value, offset, newStr, 0, count - (x - offset));
while (--i >= 0)
{
char ch = value[x];
// Hardcoded special case.
- newStr[x++] = (turkish && ch == '\u0069') ? '\u0130'
- : Character.toUpperCase(ch);
+ if (ch != '\u0069')
+ {
+ newStr[x - offset] = Character.toUpperCase(ch);
+ }
+ else
+ {
+ newStr[x - offset] = '\u0130';
+ }
+ x++;
}
// Package constructor avoids an array copy.
- return new String(newStr, offset, count, true);
+ return new String(newStr, 0, count, true);
}
// Expansion is necessary.
{
char ch = value[x++];
// Hardcoded special case.
- if (turkish && ch == '\u0069')
+ if (ch == '\u0069')
{
newStr[j++] = '\u0130';
continue;
return new String(newStr, 0, newStr.length, true);
}
+ /**
+ * Uppercases this String according to a particular locale. This uses
+ * Unicode's special case mappings, as applied to the given Locale, so the
+ * resulting string may be a different length.
+ *
+ * @param loc locale to use
+ * @return new uppercased String, or this if no characters were uppercased
+ * @throws NullPointerException if loc is null
+ * @see #toLowerCase(Locale)
+ * @since 1.1
+ */
+ public String toUpperCase(Locale loc)
+ {
+ // First, see how many characters we have to grow by, as well as if the
+ // current string is already upper case.
+
+ // Is loc turkish? String equality test is ok as Locale.language is interned
+ if ("tr" == loc.getLanguage())
+ {
+ return toUpperCaseTurkish();
+ }
+ else
+ {
+ int expand = 0;
+ boolean unchanged = true;
+ int i = count;
+ int x = i + offset;
+ while (--i >= 0)
+ {
+ char ch = value[--x];
+ expand += upperCaseExpansion(ch);
+ unchanged = (unchanged && expand == 0
+ && ch == Character.toUpperCase(ch));
+ }
+ if (unchanged)
+ return this;
+
+ // Now we perform the conversion.
+ i = count;
+ if (expand == 0)
+ {
+ char[] newStr = new char[count];
+ VMSystem.arraycopy(value, offset, newStr, 0, count - (x - offset));
+ while (--i >= 0)
+ {
+ char ch = value[x];
+ newStr[x - offset] = Character.toUpperCase(ch);
+ x++;
+ }
+ // Package constructor avoids an array copy.
+ return new String(newStr, 0, count, true);
+ }
+
+ // Expansion is necessary.
+ char[] newStr = new char[count + expand];
+ int j = 0;
+ while (--i >= 0)
+ {
+ char ch = value[x++];
+ expand = upperCaseExpansion(ch);
+ if (expand > 0)
+ {
+ int index = upperCaseIndex(ch);
+ while (expand-- >= 0)
+ newStr[j++] = upperExpand[index++];
+ }
+ else
+ newStr[j++] = Character.toUpperCase(ch);
+ }
+ // Package constructor avoids an array copy.
+ return new String(newStr, 0, newStr.length, true);
+ }
+ }
/**
* Uppercases this String. This uses Unicode's special case mappings, as
* applied to the platform's default Locale, so the resulting string may
*/
public char[] toCharArray()
{
- if (count == value.length)
- return (char[]) value.clone();
-
char[] copy = new char[count];
VMSystem.arraycopy(value, offset, copy, 0, count);
return copy;
* Blocks the retention of all elements in the specified
* collection from the collection.
*
- * @param c the collection of elements to retain.
+ * @param coll the collection of elements to retain.
* @return true if the other elements were removed.
* @throws NullPointerException if the collection is null.
* @throws NullPointerException if any collection entry is null.
// different threads to get mixed up when written to the same PrintWriter.
private String stackTraceString()
{
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
// Main stacktrace
StackTraceElement[] stack = getStackTrace();
// Adds to the given StringBuffer a line containing the name and
// all stacktrace elements minus the last equal ones.
- private static void stackTraceStringBuffer(StringBuffer sb, String name,
+ private static void stackTraceStringBuffer(StringBuilder sb, String name,
StackTraceElement[] stack, int equal)
{
String nl = StaticData.nl;
*/
private static CompositeType seType;
- /**
- * Constructs a new {@link ThreadInfo} corresponding
- * to the thread specified.
- *
- * @param thread the thread on which the new instance
- * will be based.
- * @param blockedCount the number of times the thread
- * has been blocked.
- * @param blockedTime the accumulated number of milliseconds
- * the specified thread has been blocked
- * (only used with contention monitoring enabled)
- * @param lock the monitor lock the thread is waiting for
- * (only used if blocked)
- * @param lockOwner the thread which owns the monitor lock, or
- * <code>null</code> if it doesn't have an owner
- * (only used if blocked)
- * @param waitedCount the number of times the thread has been in a
- * waiting state.
- * @param waitedTime the accumulated number of milliseconds the
- * specified thread has been waiting
- * (only used with contention monitoring enabled)
- * @param isInNative true if the thread is in a native method.
- * @param isSuspended true if the thread is suspended.
- * @param trace the stack trace of the thread to a pre-determined
- * depth (see VMThreadMXBeanImpl)
- */
- private ThreadInfo(Thread thread, long blockedCount, long blockedTime,
- Object lock, Thread lockOwner, long waitedCount,
- long waitedTime, boolean isInNative, boolean isSuspended,
- StackTraceElement[] trace)
- {
- this(thread, blockedCount, blockedTime, lock, lockOwner, waitedCount,
- waitedTime, isInNative, isSuspended, trace, new MonitorInfo[]{},
- new LockInfo[]{});
- }
-
- /**
- * Constructs a new {@link ThreadInfo} corresponding
- * to the thread specified.
- *
- * @param thread the thread on which the new instance
- * will be based.
- * @param blockedCount the number of times the thread
- * has been blocked.
- * @param blockedTime the accumulated number of milliseconds
- * the specified thread has been blocked
- * (only used with contention monitoring enabled)
- * @param lock the monitor lock the thread is waiting for
- * (only used if blocked)
- * @param lockOwner the thread which owns the monitor lock, or
- * <code>null</code> if it doesn't have an owner
- * (only used if blocked)
- * @param waitedCount the number of times the thread has been in a
- * waiting state.
- * @param waitedTime the accumulated number of milliseconds the
- * specified thread has been waiting
- * (only used with contention monitoring enabled)
- * @param isInNative true if the thread is in a native method.
- * @param isSuspended true if the thread is suspended.
- * @param trace the stack trace of the thread to a pre-determined
- * depth (see VMThreadMXBeanImpl)
- * @param lockedMonitors an array of {@link MonitorInfo} objects
- * representing locks held on object monitors
- * by the thread.
- * @param lockedSynchronizers an array of {@link LockInfo} objects
- * representing locks held on ownable
- * synchronizers by the thread.
- * @since 1.6
- */
- private ThreadInfo(Thread thread, long blockedCount, long blockedTime,
- Object lock, Thread lockOwner, long waitedCount,
- long waitedTime, boolean isInNative, boolean isSuspended,
- StackTraceElement[] trace, MonitorInfo[] lockedMonitors,
- LockInfo[] lockedSynchronizers)
- {
- this(thread.getId(), thread.getName(), thread.getState(), blockedCount, blockedTime,
- lock == null ? null : lock.getClass().getName() + "@" +
- Integer.toHexString(System.identityHashCode(lock)),
- lockOwner == null ? -1 : lockOwner.getId(),
- lockOwner == null ? null : lockOwner.getName(),
- waitedCount, waitedTime, isInNative, isSuspended,
- trace, lockedMonitors, lockedSynchronizers);
- }
-
- /**
- * Constructs a new {@link ThreadInfo} corresponding
- * to the thread details specified.
- *
- * @param threadId the id of the thread on which this
- * new instance will be based.
- * @param threadName the name of the thread on which
- * this new instance will be based.
- * @param threadState the state of the thread on which
- * this new instance will be based.
- * @param blockedCount the number of times the thread
- * has been blocked.
- * @param blockedTime the accumulated number of milliseconds
- * the specified thread has been blocked
- * (only used with contention monitoring enabled)
- * @param lockName the name of the monitor lock the thread is waiting for
- * (only used if blocked)
- * @param lockOwnerId the id of the thread which owns the monitor
- * lock, or <code>-1</code> if it doesn't have an owner
- * (only used if blocked)
- * @param lockOwnerName the name of the thread which owns the monitor
- * lock, or <code>null</code> if it doesn't have an
- * owner (only used if blocked)
- * @param waitedCount the number of times the thread has been in a
- * waiting state.
- * @param waitedTime the accumulated number of milliseconds the
- * specified thread has been waiting
- * (only used with contention monitoring enabled)
- * @param isInNative true if the thread is in a native method.
- * @param isSuspended true if the thread is suspended.
- * @param trace the stack trace of the thread to a pre-determined
- * depth (see VMThreadMXBeanImpl)
- */
- private ThreadInfo(long threadId, String threadName, Thread.State threadState,
- long blockedCount, long blockedTime, String lockName,
- long lockOwnerId, String lockOwnerName, long waitedCount,
- long waitedTime, boolean isInNative, boolean isSuspended,
- StackTraceElement[] trace)
- {
- this(threadId, threadName, threadState, blockedCount, blockedTime,
- lockName, lockOwnerId, lockOwnerName, waitedCount, waitedTime,
- isInNative, isSuspended, trace, new MonitorInfo[]{}, new LockInfo[]{});
- }
-
/**
* Constructs a new {@link ThreadInfo} corresponding
* to the thread details specified.
if (array instanceof boolean[])
return ((boolean[]) array)[index] ? Boolean.TRUE : Boolean.FALSE;
if (array instanceof byte[])
- return new Byte(((byte[]) array)[index]);
+ return Byte.valueOf(((byte[]) array)[index]);
if (array instanceof char[])
- return new Character(((char[]) array)[index]);
+ return Character.valueOf(((char[]) array)[index]);
if (array instanceof short[])
- return new Short(((short[]) array)[index]);
+ return Short.valueOf(((short[]) array)[index]);
if (array instanceof int[])
- return new Integer(((int[]) array)[index]);
+ return Integer.valueOf(((int[]) array)[index]);
if (array instanceof long[])
- return new Long(((long[]) array)[index]);
+ return Long.valueOf(((long[]) array)[index]);
if (array instanceof float[])
- return new Float(((float[]) array)[index]);
+ return Float.valueOf(((float[]) array)[index]);
if (array instanceof double[])
- return new Double(((double[]) array)[index]);
+ return Double.valueOf(((double[]) array)[index]);
if (array == null)
throw new NullPointerException();
throw new IllegalArgumentException();
.getMethod("equals",
new Class[] {Object.class}));
coreMethods.put(sig, sig);
- sig = new ProxySignature(Object.class.getMethod("hashCode", null));
+ sig = new ProxySignature(Object.class.getMethod("hashCode"));
coreMethods.put(sig, sig);
- sig = new ProxySignature(Object.class.getMethod("toString", null));
+ sig = new ProxySignature(Object.class.getMethod("toString"));
coreMethods.put(sig, sig);
}
catch (Exception e)
code_length += 9; // new, dup_x1, swap, invokespecial, athrow
}
int handler_pc = code_length - 1;
- StringBuffer signature = new StringBuffer("(");
+ StringBuilder signature = new StringBuilder("(");
for (int j = 0; j < paramtypes.length; j++)
signature.append(TypeSignature.getEncodingOfClass(paramtypes[j]));
signature.append(")").append(TypeSignature.getEncodingOfClass(ret_type));
// we're in the same package.
m.flag = true;
- Object[] args = {loader, qualName, bytecode, new Integer(0),
- new Integer(bytecode.length),
+ Object[] args = {loader, qualName, bytecode, Integer.valueOf(0),
+ Integer.valueOf(bytecode.length),
Object.class.getProtectionDomain() };
Class clazz = (Class) m.invoke(null, args);
if (i == len)
return str;
- final StringBuffer sb = new StringBuffer(str);
+ final StringBuilder sb = new StringBuilder(str);
sb.setLength(i);
for ( ; i < len; i++)
{
int size = poolEntries.size() + 1;
if (size >= 65535)
throw new IllegalArgumentException("exceeds VM limitations");
- i = new Integer(size);
+ i = Integer.valueOf(size);
poolEntries.put(sequence, i);
pool.append(sequence);
}
/* java.math.BigInteger -- Arbitary precision integers
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
int b = pMinus1.getLowestSetBit();
// Set m such that this = 1 + 2^b * m.
- BigInteger m = pMinus1.divide(valueOf(2L << b - 1));
+ BigInteger m = pMinus1.divide(valueOf(2L).pow(b));
// The HAC (Handbook of Applied Cryptography), Alfred Menezes & al. Note
// 4.49 (controlling the error probability) gives the number of trials
if (timeout < 0)
throw new IllegalArgumentException("Invalid timeout: " + timeout);
- getImpl().setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
+ getImpl().setOption(SocketOptions.SO_TIMEOUT, Integer.valueOf(timeout));
}
/**
if (size < 0)
throw new IllegalArgumentException("Buffer size is less than 0");
- getImpl().setOption(SocketOptions.SO_SNDBUF, new Integer(size));
+ getImpl().setOption(SocketOptions.SO_SNDBUF, Integer.valueOf(size));
}
/**
if (size < 0)
throw new IllegalArgumentException("Buffer size is less than 0");
- getImpl().setOption(SocketOptions.SO_RCVBUF, new Integer(size));
+ getImpl().setOption(SocketOptions.SO_RCVBUF, Integer.valueOf(size));
}
/**
if (tc < 0 || tc > 255)
throw new IllegalArgumentException();
- getImpl().setOption(SocketOptions.IP_TOS, new Integer(tc));
+ getImpl().setOption(SocketOptions.IP_TOS, Integer.valueOf(tc));
}
/**
/**
* Return the hostname for the specified IP address.
*
- * @param ip The IP address as a byte array
+ * @param addr The IP address as a byte array
*
* @return The hostname
*
public static String getHostByAddr(byte[] addr) throws UnknownHostException
{
Object key = makeHashableAddress(addr);
- Entry entry = (Entry) get(key);
+ Entry entry = get(key);
if (entry != null)
{
if (entry.value == null)
public static byte[][] getHostByName(String hostname)
throws UnknownHostException
{
- Entry entry = (Entry) get(hostname);
+ Entry entry = get(hostname);
if (entry != null)
{
if (entry.value == null)
if (timeout < 0)
throw new IllegalArgumentException("SO_TIMEOUT value must be >= 0");
- impl.setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
+ impl.setOption(SocketOptions.SO_TIMEOUT, Integer.valueOf(timeout));
}
/**
if (size <= 0)
throw new IllegalArgumentException("SO_RCVBUF value must be > 0");
- impl.setOption(SocketOptions.SO_RCVBUF, new Integer(size));
+ impl.setOption(SocketOptions.SO_RCVBUF, Integer.valueOf(size));
}
/**
if (timeout < 0)
throw new IllegalArgumentException("SO_TIMEOUT value must be >= 0");
- getImpl().setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
+ getImpl().setOption(SocketOptions.SO_TIMEOUT, Integer.valueOf(timeout));
}
/**
if (size <= 0)
throw new IllegalArgumentException("SO_SNDBUF value must be > 0");
- getImpl().setOption(SocketOptions.SO_SNDBUF, new Integer(size));
+ getImpl().setOption(SocketOptions.SO_SNDBUF, Integer.valueOf(size));
}
/**
if (size <= 0)
throw new IllegalArgumentException("SO_RCVBUF value must be > 0");
- getImpl().setOption(SocketOptions.SO_RCVBUF, new Integer(size));
+ getImpl().setOption(SocketOptions.SO_RCVBUF, Integer.valueOf(size));
}
/**
if (tc < 0 || tc > 255)
throw new IllegalArgumentException();
- getImpl().setOption(SocketOptions.IP_TOS, new Integer(tc));
+ getImpl().setOption(SocketOptions.IP_TOS, Integer.valueOf(tc));
}
/**
*/
private static String quote(String str, String legalCharacters)
{
- StringBuffer sb = new StringBuffer(str.length());
+ StringBuilder sb = new StringBuilder(str.length());
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
This follows the algorithm in section 5.2.4. of RFC3986,
but doesn't modify the input buffer.
*/
- StringBuffer input = new StringBuffer(relativePath);
- StringBuffer output = new StringBuffer();
+ StringBuilder input = new StringBuilder(relativePath);
+ StringBuilder output = new StringBuilder();
int start = 0;
while (start < input.length())
{
*
* @param buffer the buffer containing the path.
*/
- private void removeLastSegment(StringBuffer buffer)
+ private void removeLastSegment(StringBuilder buffer)
{
int lastSlash = buffer.lastIndexOf("/");
if (lastSlash == -1)
path = "";
if (! (path.startsWith("/")))
{
- StringBuffer basepath = new StringBuffer(this.path);
+ StringBuilder basepath = new StringBuilder(this.path);
int i = this.path.lastIndexOf('/');
if (i >= 0)
int hCompare = host.compareTo(uri.getHost());
if (hCompare != 0)
return hCompare;
- return new Integer(port).compareTo(new Integer(uri.getPort()));
+ int uriPort = uri.getPort();
+ return (uriPort == port) ? 0 : (uriPort > port) ? -1 : 1;
}
}
if (rawPath == null && uri.getRawPath() != null)
{
String strRep = toString();
boolean inNonAsciiBlock = false;
- StringBuffer buffer = new StringBuffer();
- StringBuffer encBuffer = null;
+ StringBuilder buffer = new StringBuilder();
+ StringBuilder encBuffer = null;
for (int i = 0; i < strRep.length(); i++)
{
char c = strRep.charAt(i);
{
if (!inNonAsciiBlock)
{
- encBuffer = new StringBuffer();
+ encBuffer = new StringBuilder();
inNonAsciiBlock = true;
}
encBuffer.append(c);
{
try
{
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
// this is far from optimal, but it works
byte[] utf8 = str.getBytes("utf-8");
for (int j = 0; j < utf8.length; j++)
{
// Compute the name of the package as it may appear in the
// Manifest.
- StringBuffer xform = new StringBuffer(name);
+ StringBuilder xform = new StringBuilder(name);
for (int i = xform.length () - 1; i >= 0; --i)
if (xform.charAt(i) == '.')
xform.setCharAt(i, '/');
{
if (thisString == null)
{
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(this.getClass().getName());
sb.append("{urls=[" );
URL[] thisURLs = getURLs();
int start = 0;
int i = 0;
- StringBuffer result = new StringBuffer(length);
+ StringBuilder result = new StringBuilder(length);
while (true)
{
while (i < length && isSafe(s.charAt(i)))
{
for (Iterator<Charset> i = providers[j].charsets(); i.hasNext(); )
{
- Charset cs = (Charset) i.next();
+ Charset cs = i.next();
charsets.put(cs.name(), cs);
}
}
if (length <= 0)
throw new IllegalArgumentException ("Non-positive length");
- Integer len = new Integer (length);
+ Integer len = Integer.valueOf (length);
CoderResult cr = null;
Object o;
if ((o = cache.get (len)) != null)
package java.security;
-import java.util.WeakHashMap;
-
import java.nio.ByteBuffer;
import java.util.HashMap;
{
synchronized (protectionDomainCache)
{
- protectionDomain = (ProtectionDomain)protectionDomainCache.get(cs);
+ protectionDomain = protectionDomainCache.get(cs);
}
if (protectionDomain == null)
= new ProtectionDomain(cs, getPermissions(cs), this, null);
synchronized (protectionDomainCache)
{
- ProtectionDomain domain
- = (ProtectionDomain)protectionDomainCache.get(cs);
+ ProtectionDomain domain = protectionDomainCache.get(cs);
if (domain == null)
protectionDomainCache.put(cs, protectionDomain);
else
return true;
// assume value is a number. cehck for greater-than-or-equal
- return (new Integer(val).intValue() >= new Integer(realVal).intValue());
+ return (Integer.parseInt(val) >= Integer.parseInt(realVal));
}
}
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
-import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Provider;
/**
Public Exponent F0 = 3
*/
- public static final BigInteger F0 = new BigInteger("3");
+ public static final BigInteger F0 = BigInteger.valueOf(3);
/**
Public Exponent F4 = 3
*/
- public static final BigInteger F4 = new BigInteger("65537");
+ public static final BigInteger F4 = BigInteger.valueOf(65537L);
/**
Create a new RSAKeyGenParameterSpec to store the RSA key's keysize
if (index == max)
throw new IllegalArgumentException ("unexpected end of text");
- Double d = new Double (newPattern.substring(dstart, index));
+ Double d = Double.valueOf (newPattern.substring(dstart, index));
if (newPattern.charAt(index) == '<')
- d = new Double (nextDouble (d.doubleValue()));
+ d = Double.valueOf (nextDouble (d.doubleValue()));
limitVec.addElement(d);
if (sourceStr.startsWith(choiceFormats[i], index))
{
pos.setIndex(index + choiceFormats[i].length());
- return new Double (choiceLimits[i]);
+ return Double.valueOf (choiceLimits[i]);
}
}
pos.setErrorIndex(index);
- return new Double (Double.NaN);
+ return Double.valueOf (Double.NaN);
}
/**
/**
* This is the String that is being iterated over.
*/
- String text;
+ CharacterIterator text;
/**
* This is the index into the collation decomposition where we are currently scanning.
setText (text);
}
+ /**
+ * This method initializes a new instance of <code>CollationElementIterator</code>
+ * to iterate over the specified <code>String</code> using the rules in the
+ * specified <code>RuleBasedCollator</code>.
+ *
+ * @param collator The <code>RuleBasedCollation</code> used for calculating collation values
+ * @param text The character iterator to iterate over.
+ */
+ CollationElementIterator(RuleBasedCollator collator, CharacterIterator text)
+ {
+ this.collator = collator;
+
+ setText (text);
+ }
+
RuleBasedCollator.CollationElement nextBlock()
{
if (index >= text_decomposition.length)
int alreadyExpanded = 0;
int idxToMove = 0;
- this.text = text;
+ this.text = new StringCharacterIterator(text);
this.index = 0;
String work_text = text.intern();
if (offset < 0)
throw new IllegalArgumentException("Negative offset: " + offset);
- if (offset > (text.length() - 1))
+ if (offset > (text.getEndIndex() - 1))
throw new IllegalArgumentException("Offset too large: " + offset);
for (index = 0; index < text_decomposition.length; index++)
if (this.parseBigDecimal)
{
if (isNegative)
- return new BigDecimal(Double.NEGATIVE_INFINITY);
+ return BigDecimal.valueOf(Double.NEGATIVE_INFINITY);
- return new BigDecimal(Double.POSITIVE_INFINITY);
+ return BigDecimal.valueOf(Double.POSITIVE_INFINITY);
}
if (isNegative)
- return new Double(Double.NEGATIVE_INFINITY);
+ return Double.valueOf(Double.NEGATIVE_INFINITY);
- return new Double(Double.POSITIVE_INFINITY);
+ return Double.valueOf(Double.POSITIVE_INFINITY);
}
// no number...
// want integer?
if (this.parseIntegerOnly)
- return new Long(bigDecimal.longValue());
+ return Long.valueOf(bigDecimal.longValue());
// 3th special case -0.0
if (isNegative && (bigDecimal.compareTo(BigDecimal.ZERO) == 0))
- return new Double(-0.0);
+ return Double.valueOf(-0.0);
try
{
BigDecimal integer
= bigDecimal.setScale(0, BigDecimal.ROUND_UNNECESSARY);
- return new Long(integer.longValue());
+ return Long.valueOf(integer.longValue());
}
catch (ArithmeticException e)
{
- return new Double(bigDecimal.doubleValue());
+ return Double.valueOf(bigDecimal.doubleValue());
}
}
int endIndexFract = 0;
// compute the multiplier to use with percent and similar
- number = number.multiply(new BigDecimal(_multiplier));
+ number = number.multiply(BigDecimal.valueOf(_multiplier));
// XXX: special case, not sure if it belongs here or if it is
// correct at all. There may be other special cases as well
int position = output_iterator.getEndIndex();
hash_argument.put (MessageFormat.Field.ARGUMENT,
- new Integer(elements[i].argNumber));
+ Integer.valueOf(elements[i].argNumber));
if (iterator != null)
// have recursive formatting.
ChoiceFormat cf = (ChoiceFormat) formatter;
String[] formats = (String[]) cf.getFormats();
- double[] limits = (double[]) cf.getLimits();
+ double[] limits = cf.getLimits();
MessageFormat subfmt = new MessageFormat ();
subfmt.setLocale(locale);
ParsePosition subpos = new ParsePosition (index);
* @return A <code>CollationElementIterator</code> for the specified <code>String</code>.
*/
public CollationElementIterator getCollationElementIterator(CharacterIterator source)
- throws NotImplementedException // Because decomposeCharacter does not work
{
- StringBuffer expand = new StringBuffer("");
-
- // Right now we assume that we will read from the beginning of the string.
- for (char c = source.first();
- c != CharacterIterator.DONE;
- c = source.next())
- decomposeCharacter(c, expand);
-
- return getCollationElementIterator(expand.toString());
+ return new CollationElementIterator(this, source);
}
/**
*/
public String toString()
{
- StringBuffer builder;
+ StringBuilder builder;
- builder = new StringBuffer(getClass().getName());
+ builder = new StringBuilder(getClass().getName());
builder.append("[field=");
builder.append(field);
builder.append(", size=");
// Look for the terminating quote. However, if we
// see a '', that represents a literal quote and
// we must iterate.
- StringBuffer buf = new StringBuffer();
+ StringBuilder buf = new StringBuilder();
int oldPos = i + 1;
do
{
else
{
// A special character
- tokens.add(new Character(thisChar));
+ tokens.add(Character.valueOf(thisChar));
}
}
else
*/
public String toString()
{
- StringBuffer output = new StringBuffer(getClass().getName());
+ StringBuilder output = new StringBuilder(getClass().getName());
output.append("[tokens=");
output.append(tokens);
output.append(", formatData=");
String oldChars, String newChars)
{
int len = pattern.length();
- StringBuffer buf = new StringBuffer(len);
+ StringBuilder buf = new StringBuilder(len);
boolean quoted = false;
for (int i = 0; i < len; i++)
{
// advance the index
pos.setIndex(pos.getIndex() + matcher.end());
- return new Integer(offset);
+ return Integer.valueOf(offset);
}
else if (zoneString.startsWith("GMT"))
{
pos.setIndex(pos.getIndex() + 3);
- return new Integer(0);
+ return Integer.valueOf(0);
}
return null;
}
public String toString()
{
Iterator<Map.Entry<K, V>> entries = entrySet().iterator();
- StringBuffer r = new StringBuffer("{");
+ StringBuilder r = new StringBuilder("{");
for (int pos = size(); pos > 0; pos--)
{
Map.Entry<K, V> entry = entries.next();
* Cache of locale->calendar-class mappings. This avoids having to do a ResourceBundle
* lookup for every getInstance call.
*/
- private static HashMap<Locale,Class> cache = new HashMap<Locale,Class>();
+ private static final HashMap<Locale,Class> cache = new HashMap<Locale,Class>();
/** Preset argument types for calendar-class constructor lookup. */
private static Class[] ctorArgTypes = new Class[]
/**
* Compares the time of two calendar instances.
- * @param calendar the calendar to which the time should be compared.
+ * @param cal the calendar to which the time should be compared.
* @return 0 if the two calendars are set to the same time,
* less than 0 if the time of this calendar is before that of
* <code>cal</code>, or more than 0 if the time of this calendar is after
*/
public String toString()
{
- StringBuffer sb = new StringBuffer();
- sb.append(getClass().getName()).append('[');
+ StringBuilder sb = new StringBuilder(getClass().getName());
+ sb.append('[');
sb.append("time=");
if (isTimeSet)
sb.append(time);
* correct type.
*
* @param index the index at which to place the new element.
- * @param c the collections of objects to add.
+ * @param coll the collections of objects to add.
* @throws ClassCastException if the type of any element in c is not a
* valid type for the underlying collection.
*/
* Adds all pairs within the supplied map to the underlying map,
* provided they are all have the correct key and value types.
*
- * @param m the map, the entries of which should be added
+ * @param map the map, the entries of which should be added
* to the underlying map.
* @throws ClassCastException if the type of a key or value is
* not a valid type for the underlying map.
boolean localTimezone = true;
// Trim out any nested stuff in parentheses now to make parsing easier.
- StringBuffer buf = new StringBuffer();
+ StringBuilder buf = new StringBuilder();
int parenNesting = 0;
int len = string.length();
for (int i = 0; i < len; i++)
* If the locale is <code>null</code>, then no localization is
* applied.
*
- * @param file the output stream.
+ * @param out the output stream.
* @param charset the character set to use for output.
* @param loc the locale to use.
* @throws UnsupportedEncodingException if the supplied character
* Outputs a formatted string based on the supplied specification,
* <code>fmt</code>, and its arguments using the formatter's locale.
*
- * @param fmt the format specification.
+ * @param format the format specification.
* @param args the arguments to apply to the specification.
* @throws IllegalFormatException if there is a problem with
* the syntax of the format
// would repeatedly re-lock/release the monitor, we directly use the
// unsynchronized EntryIterator instead.
Iterator<Map.Entry<K, V>> entries = new EntryIterator();
- StringBuffer r = new StringBuffer("{");
+ StringBuilder r = new StringBuilder("{");
for (int pos = size; pos > 0; pos--)
{
r.append(entries.next());
* <code>next()</code> gives a different result, by returning just
* the key rather than the whole element.
*/
- private EntryIterator iterator;
+ private final EntryIterator iterator;
/**
* Construct a new KeyIterator
* <code>next()</code> gives a different result, by returning just
* the value rather than the whole element.
*/
- private EntryIterator iterator;
+ private final EntryIterator iterator;
/**
* Construct a new KeyIterator
* <code>nextElement()</code> gives a different result, by returning just
* the key rather than the whole element.
*/
- private EntryEnumerator enumerator;
+ private final EntryEnumerator enumerator;
/**
* Construct a new KeyEnumerator
* <code>nextElement()</code> gives a different result, by returning just
* the value rather than the whole element.
*/
- private EntryEnumerator enumerator;
+ private final EntryEnumerator enumerator;
/**
* Construct a new ValueEnumerator
/* LinkedHashSet.java -- a set backed by a LinkedHashMap, for linked
list traversal.
- Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2004, 2005, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
/**
* Construct a new, empty HashSet whose backing HashMap has the default
- * capacity (11) and loadFacor (0.75).
+ * capacity (11) and loadFactor (0.75).
*/
public LinkedHashSet()
{
*
* @serial the languange, possibly ""
*/
- private String language;
+ private final String language;
/**
* The country code, as returned by getCountry().
*
* @serial the country, possibly ""
*/
- private String country;
+ private final String country;
/**
* The variant code, as returned by getVariant().
*
* @serial the variant, possibly ""
*/
- private String variant;
+ private final String variant;
/**
* This is the cached hashcode. When writing to stream, we write -1.
// default locale.
if (defaultLocale != null)
{
- language = convertLanguage(language).intern();
- country = country.toUpperCase().intern();
- variant = variant.intern();
+ language = convertLanguage(language);
+ country = country.toUpperCase();
}
- this.language = language;
- this.country = country;
- this.variant = variant;
+ this.language = language.intern();
+ this.country = country.intern();
+ this.variant = variant.intern();
hashcode = language.hashCode() ^ country.hashCode() ^ variant.hashCode();
}
throws IOException, ClassNotFoundException
{
s.defaultReadObject();
- language = language.intern();
- country = country.intern();
- variant = variant.intern();
hashcode = language.hashCode() ^ country.hashCode() ^ variant.hashCode();
}
} // class Locale
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+
import java.lang.reflect.Array;
+
import java.util.AbstractList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.List;
+import java.util.ListIterator;
+import java.util.NoSuchElementException;
import java.util.RandomAccess;
-/** @since 1.5 */
-public class CopyOnWriteArrayList<E> extends AbstractList<E> implements
- List<E>, RandomAccess, Cloneable, Serializable
+/**
+ * A thread-safe implementation of an ArrayList. A CopyOnWriteArrayList is
+ * as special ArrayList which performs copies of the underlying storage
+ * each time a write (<code>remove</code>, <code>add</code> etc..) operation
+ * is performed.<br />
+ * <br />
+ * The update operation in this class run usually in <code>O(n)</code> or worse,
+ * but traversal operations are fast and efficient, especially when running in
+ * a multi-thread environment without the need to design complex synchronize
+ * mechanisms.<br />
+ * <br />
+ * <code>Iterator</code>s in this class work on a snapshot of the backing store
+ * at the moment the iterator itself was created, hence the iterator will not
+ * reflect changes in the underlying storage. Thus, update operation on the
+ * <code>Iterator</code>s are not supported, but as interferences from other
+ * threads are impossible, no <code>ConcurrentModificationException</code>
+ * will be ever thrown from within the <code>Iterator</code>.
+ * <br /><br />
+ * This class is especially useful when used with event handling, like the
+ * following code demonstrates:<br />
+ * <code><pre>
+ *
+ * CopyOnWriteArrayList<EventListener> listeners =
+ * new CopyOnWriteArrayList<EventListener>();
+ *
+ * [...]
+ *
+ * for (final EventListener listener : listeners)
+ * {
+ * Runnable dispatcher = new Runnable() {
+ * public void run()
+ * {
+ * listener.preferenceChange(event);
+ * }
+ * };
+ *
+ * Executor executor = Executors.newSingleThreadExecutor();
+ * executor.execute(dispatcher);
+ * }
+ * </pre></code>
+ *
+ * @since 1.5
+ */
+public class CopyOnWriteArrayList<E>
+ implements List<E>, RandomAccess, Cloneable, Serializable
{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 8673264195747942595L;
+
/**
* Where the data is stored.
*/
}
/**
- * Returns true iff element is in this ArrayList.
+ * Returns true if element is in this ArrayList.
*
* @param e
* the element whose inclusion in the List is being tested
return indexOf(e) != -1;
}
+ /**
+ * Tests whether this collection contains all the elements in a given
+ * collection. This implementation iterates over the given collection,
+ * testing whether each element is contained in this collection. If any one
+ * is not, false is returned. Otherwise true is returned.
+ *
+ * @param c the collection to test against
+ * @return true if this collection contains all the elements in the given
+ * collection
+ * @throws NullPointerException if the given collection is null
+ * @see #contains(Object)
+ */
+ public boolean containsAll(Collection<?> c)
+ {
+ Iterator<?> itr = c.iterator();
+ int pos = c.size();
+ while (--pos >= 0)
+ if (!contains(itr.next()))
+ return false;
+ return true;
+ }
+
/**
* Returns the lowest index at which element appears in this List, or -1 if it
* does not appear.
for (int i = index; i < data.length; i++)
if (equals(e, data[i]))
- return i;
+ return i;
return -1;
}
for (int i = index; i >= 0; i--)
if (equals(e, data[i]))
- return i;
+ return i;
return -1;
}
try
{
clone = (CopyOnWriteArrayList<E>) super.clone();
- clone.data = (E[]) data.clone();
}
catch (CloneNotSupportedException e)
{
*/
public synchronized E remove(int index)
{
- E[] data = this.data;
- E[] newData = (E[]) new Object[data.length - 1];
+ if (index < 0 || index >= this.size())
+ throw new IndexOutOfBoundsException("index = " + index);
+
+ E[] snapshot = this.data;
+ E[] newData = (E[]) new Object[snapshot.length - 1];
+
+ E result = snapshot[index];
+
if (index > 0)
- System.arraycopy(data, 0, newData, 0, index - 1);
- System.arraycopy(data, index + 1, newData, index,
- data.length - index - 1);
- E r = data[index];
+ System.arraycopy(snapshot, 0, newData, 0, index);
+
+ System.arraycopy(snapshot, index + 1, newData, index,
+ snapshot.length - index - 1);
+
this.data = newData;
- return r;
+
+ return result;
}
+ /**
+ * Remove the first occurrence, if any, of the given object from this list,
+ * returning <code>true</code> if the object was removed, <code>false</code>
+ * otherwise.
+ *
+ * @param element the object to be removed.
+ * @return true if element was removed, false otherwise. false means also that
+ * the underlying storage was unchanged after this operation concluded.
+ */
+ public synchronized boolean remove(Object element)
+ {
+ E[] snapshot = this.data;
+ E[] newData = (E[]) new Object[snapshot.length - 1];
+
+ // search the element to remove while filling the backup array
+ // this way we can run this method in O(n)
+ int elementIndex = -1;
+ for (int i = 0; i < snapshot.length; i++)
+ {
+ if (equals(element, snapshot[i]))
+ {
+ elementIndex = i;
+ break;
+ }
+
+ if (i < newData.length)
+ newData[i] = snapshot[i];
+ }
+
+ if (elementIndex < 0)
+ return false;
+
+ System.arraycopy(snapshot, elementIndex + 1, newData, elementIndex,
+ snapshot.length - elementIndex - 1);
+ this.data = newData;
+
+ return true;
+ }
+
+ /**
+ * Removes all the elements contained in the given collection.
+ * This method removes the elements that are contained in both
+ * this list and in the given collection.
+ *
+ * @param c the collection containing the elements to be removed from this
+ * list.
+ * @return true if at least one element was removed, indicating that
+ * the list internal storage changed as a result, false otherwise.
+ */
+ public synchronized boolean removeAll(Collection<?> c)
+ {
+ if (c.size() == 0)
+ return false;
+
+ E [] snapshot = this.data;
+ E [] storage = (E[]) new Object[this.data.length];
+ boolean changed = false;
+
+ int length = 0;
+ for (E element : snapshot)
+ {
+ // copy all the elements, including null values
+ // if the collection can hold it
+ // FIXME: slow operation
+ if (c.contains(element))
+ changed = true;
+ else
+ storage[length++] = element;
+ }
+
+ if (!changed)
+ return false;
+
+ E[] newData = (E[]) new Object[length];
+ System.arraycopy(storage, 0, newData, 0, length);
+
+ this.data = newData;
+
+ return true;
+ }
+
+ /**
+ * Removes all the elements that are not in the passed collection.
+ * If the collection is void, this method has the same effect of
+ * <code>clear()</code>.
+ * Please, note that this method is extremely slow (unless the argument has
+ * <code>size == 0</code>) and has bad performance is both space and time
+ * usage.
+ *
+ * @param c the collection containing the elements to be retained by this
+ * list.
+ * @return true the list internal storage changed as a result of this
+ * operation, false otherwise.
+ */
+ public synchronized boolean retainAll(Collection<?> c)
+ {
+ // if the given collection does not contain elements
+ // we remove all the elements from our storage
+ if (c.size() == 0)
+ {
+ this.clear();
+ return true;
+ }
+
+ E [] snapshot = this.data;
+ E [] storage = (E[]) new Object[this.data.length];
+
+ int length = 0;
+ for (E element : snapshot)
+ {
+ if (c.contains(element))
+ storage[length++] = element;
+ }
+
+ // means we retained all the elements previously in our storage
+ // we are running already slow here, but at least we avoid copying
+ // another array and changing the internal storage
+ if (length == snapshot.length)
+ return false;
+
+ E[] newData = (E[]) new Object[length];
+ System.arraycopy(storage, 0, newData, 0, length);
+
+ this.data = newData;
+
+ return true;
+ }
+
/**
* Removes all elements from this List
*/
*/
public synchronized boolean addAll(int index, Collection< ? extends E> c)
{
- E[] data = this.data;
- Iterator<? extends E> itr = c.iterator();
+ if (index < 0 || index > this.size())
+ throw new IndexOutOfBoundsException("index = " + index);
+
int csize = c.size();
if (csize == 0)
return false;
-
+
+ E[] data = this.data;
+ Iterator<? extends E> itr = c.iterator();
+
E[] newData = (E[]) new Object[data.length + csize];
- System.arraycopy(data, 0, newData, 0, data.length);
- int end = data.length;
+
+ // avoid this call at all if we were asked to put the elements at the
+ // beginning of our storage
+ if (index != 0)
+ System.arraycopy(data, 0, newData, 0, index);
+
+ int itemsLeft = index;
+
for (E value : c)
- newData[end++] = value;
+ newData[index++] = value;
+
+ // now copy the remaining elements
+ System.arraycopy(data, itemsLeft, newData, 0, data.length - itemsLeft);
+
this.data = newData;
+
return true;
}
+ /**
+ * Adds an element if the list does not contains it already.
+ *
+ * @param val the element to add to the list.
+ * @return true if the element was added, false otherwise.
+ */
public synchronized boolean addIfAbsent(E val)
{
if (contains(val))
return true;
}
+ /**
+ * Adds all the element from the given collection that are not already
+ * in this list.
+ *
+ * @param c the Collection containing the elements to be inserted
+ * @return true the list internal storage changed as a result of this
+ * operation, false otherwise.
+ */
public synchronized int addAllAbsent(Collection<? extends E> c)
{
- int result = 0;
+ int size = c.size();
+ if (size == 0)
+ return 0;
+
+ E [] snapshot = this.data;
+ E [] storage = (E[]) new Object[size];
+
+ size = 0;
for (E val : c)
{
- if (addIfAbsent(val))
- ++result;
+ if (!this.contains(val))
+ storage[size++] = val;
}
- return result;
+
+ if (size == 0)
+ return 0;
+
+ // append storage to data
+ E [] newData = (E[]) new Object[snapshot.length + size];
+
+ System.arraycopy(snapshot, 0, newData, 0, snapshot.length);
+ System.arraycopy(storage, 0, newData, snapshot.length, size);
+
+ this.data = newData;
+
+ return size;
+ }
+
+ public String toString()
+ {
+ return Arrays.toString(this.data);
+ }
+
+ public boolean equals(Object o)
+ {
+ if (o == null)
+ return false;
+
+ if (this == o)
+ return true;
+
+ // let's see if 'o' is a list, if so, we need to compare the elements
+ // as returned by the iterator
+ if (o instanceof List)
+ {
+ List<?> source = (List<?>) o;
+
+ if (source.size() != this.size())
+ return false;
+
+ Iterator<?> sourceIterator = source.iterator();
+ for (E element : this)
+ {
+ if (!element.equals(sourceIterator.next()))
+ return false;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public int hashCode()
+ {
+ // see http://java.sun.com/6/docs/api/java/util/List.html#hashcode()
+ int hashcode = 1;
+ for (E element : this)
+ {
+ hashcode = 31 * hashcode + (element == null ? 0 : element.hashCode());
+ }
+ return hashcode;
+ }
+
+ /**
+ * Return an Iterator containing the elements of this list.
+ * The Iterator uses a snapshot of the state of the internal storage
+ * at the moment this method is called and does <strong>not</strong> support
+ * update operations, so no synchronization is needed to traverse the
+ * iterator.
+ *
+ * @return an Iterator containing the elements of this list in sequence.
+ */
+ public Iterator<E> iterator()
+ {
+ return new Iterator<E>()
+ {
+ E [] iteratorData = CopyOnWriteArrayList.this.data;
+ int currentElement = 0;
+
+ public boolean hasNext()
+ {
+ return (currentElement < iteratorData.length);
+ }
+
+ public E next()
+ {
+ return iteratorData[currentElement++];
+ }
+
+ public void remove()
+ {
+ throw new UnsupportedOperationException("updating of elements in " +
+ "iterators is not supported " +
+ "by this class");
+ }
+ };
}
+
+ /**
+ * Return a ListIterator containing the elements of this list.
+ * The Iterator uses a snapshot of the state of the internal storage
+ * at the moment this method is called and does <strong>not</strong> support
+ * update operations, so no synchronization is needed to traverse the
+ * iterator.
+ *
+ * @return a ListIterator containing the elements of this list in sequence.
+ */
+ public ListIterator<E> listIterator()
+ {
+ return listIterator(0);
+ }
+
+ /**
+ * Return a ListIterator over the elements of this list starting at
+ * the specified index. An initial call to {@code next()} will thus
+ * return the element at {@code index}, while an initial call to
+ * {@code previous()} will return the element at {@code index-1}. The
+ * Iterator uses a snapshot of the state of the internal storage
+ * at the moment this method is called and does <strong>not</strong> support
+ * update operations, so no synchronization is needed to traverse the
+ * iterator.
+ *
+ * @param index the index at which to start iterating.
+ * @return a ListIterator containing the elements of this list in sequence.
+ */
+ public ListIterator<E> listIterator(final int index)
+ {
+ if (index < 0 || index > size())
+ throw new IndexOutOfBoundsException("Index: " + index + ", Size:"
+ + size());
+
+ return new ListIterator<E>()
+ {
+ E [] iteratorData = CopyOnWriteArrayList.this.data;
+ int currentElement = index;
+
+ public void add(E o)
+ {
+ throw new UnsupportedOperationException("updating of elements in " +
+ "iterators is not supported " +
+ "by this class");
+ }
+
+ public boolean hasNext()
+ {
+ return (currentElement < iteratorData.length);
+ }
+
+ public boolean hasPrevious()
+ {
+ return (currentElement > 0);
+ }
+
+ public E next()
+ {
+ if (hasNext() == false)
+ throw new java.util.NoSuchElementException();
+
+ return iteratorData[currentElement++];
+ }
+
+ public int nextIndex()
+ {
+ return (currentElement + 1);
+ }
+
+ public E previous()
+ {
+ if (hasPrevious() == false)
+ throw new java.util.NoSuchElementException();
+
+ return iteratorData[--currentElement];
+ }
+
+ public int previousIndex()
+ {
+ return (currentElement - 1);
+ }
+
+ public void remove()
+ {
+ throw new UnsupportedOperationException("updating of elements in " +
+ "iterators is not supported " +
+ "by this class");
+ }
+
+ public void set(E o)
+ {
+ throw new UnsupportedOperationException("updating of elements in " +
+ "iterators is not supported " +
+ "by this class");
+ }
+
+ };
+ }
+
+ /**
+ * Obtain a List view of a subsection of this list, from fromIndex
+ * (inclusive) to toIndex (exclusive). If the two indices are equal, the
+ * sublist is empty. The returned list should be modifiable if and only
+ * if this list is modifiable. Changes to the returned list should be
+ * reflected in this list. If this list is structurally modified in
+ * any way other than through the returned list, the result of any subsequent
+ * operations on the returned list is undefined.
+ * <p>
+ *
+ * This implementation returns a subclass of AbstractList. It stores, in
+ * private fields, the offset and size of the sublist, and the expected
+ * modCount of the backing list. If the backing list implements RandomAccess,
+ * the sublist will also.
+ * <p>
+ *
+ * The subclass's <code>set(int, Object)</code>, <code>get(int)</code>,
+ * <code>add(int, Object)</code>, <code>remove(int)</code>,
+ * <code>addAll(int, Collection)</code> and
+ * <code>removeRange(int, int)</code> methods all delegate to the
+ * corresponding methods on the backing abstract list, after
+ * bounds-checking the index and adjusting for the offset. The
+ * <code>addAll(Collection c)</code> method merely returns addAll(size, c).
+ * The <code>listIterator(int)</code> method returns a "wrapper object"
+ * over a list iterator on the backing list, which is created with the
+ * corresponding method on the backing list. The <code>iterator()</code>
+ * method merely returns listIterator(), and the <code>size()</code> method
+ * merely returns the subclass's size field.
+ * <p>
+ *
+ * All methods first check to see if the actual modCount of the backing
+ * list is equal to its expected value, and throw a
+ * ConcurrentModificationException if it is not.
+ *
+ * @param fromIndex the index that the returned list should start from
+ * (inclusive)
+ * @param toIndex the index that the returned list should go to (exclusive)
+ * @return a List backed by a subsection of this list
+ * @throws IndexOutOfBoundsException if fromIndex < 0
+ * || toIndex > size()
+ * @throws IndexOutOfBoundsException if fromIndex > toIndex
+ * @see ConcurrentModificationException
+ * @see RandomAccess
+ */
+ public synchronized List<E> subList(int fromIndex, int toIndex)
+ {
+ // This follows the specification of AbstractList, but is inconsistent
+ // with the one in List. Don't you love Sun's inconsistencies?
+ if (fromIndex > toIndex)
+ throw new IndexOutOfBoundsException(fromIndex + " > " + toIndex);
+ if (fromIndex < 0 || toIndex > size())
+ throw new IndexOutOfBoundsException();
+
+ if (this instanceof RandomAccess)
+ return new RandomAccessSubList<E>(this, fromIndex, toIndex);
+ return new SubList<E>(this, fromIndex, toIndex);
+ }
+
+ /**
+ * This class follows the implementation requirements set forth in
+ * {@link AbstractList#subList(int, int)}. It matches Sun's implementation
+ * by using a non-public top-level class in the same package.
+ *
+ * @author Original author unknown
+ * @author Eric Blake (ebb9@email.byu.edu)
+ */
+ private static class SubList<E>
+ extends AbstractList<E>
+ {
+ // Package visible, for use by iterator.
+ /** The original list. */
+ final CopyOnWriteArrayList<E> backingList;
+ /** The index of the first element of the sublist. */
+ final int offset;
+ /** The size of the sublist. */
+ int size;
+ /** The backing data */
+ E[] data;
+
+ /**
+ * Construct the sublist.
+ *
+ * @param backing the list this comes from
+ * @param fromIndex the lower bound, inclusive
+ * @param toIndex the upper bound, exclusive
+ */
+ SubList(CopyOnWriteArrayList<E> backing, int fromIndex, int toIndex)
+ {
+ backingList = backing;
+ data = backing.data;
+ offset = fromIndex;
+ size = toIndex - fromIndex;
+ }
+
+ /**
+ * This method checks the two modCount fields to ensure that there has
+ * not been a concurrent modification, returning if all is okay.
+ *
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ */
+ // This can be inlined. Package visible, for use by iterator.
+ void checkMod()
+ {
+ if (data != backingList.data)
+ throw new ConcurrentModificationException();
+ }
+
+ /**
+ * This method checks that a value is between 0 and size (inclusive). If
+ * it is not, an exception is thrown.
+ *
+ * @param index the value to check
+ * @throws IndexOutOfBoundsException if index < 0 || index > size()
+ */
+ // This will get inlined, since it is private.
+ private void checkBoundsInclusive(int index)
+ {
+ if (index < 0 || index > size)
+ throw new IndexOutOfBoundsException("Index: " + index +
+ ", Size:" + size);
+ }
+
+ /**
+ * This method checks that a value is between 0 (inclusive) and size
+ * (exclusive). If it is not, an exception is thrown.
+ *
+ * @param index the value to check
+ * @throws IndexOutOfBoundsException if index < 0 || index >= size()
+ */
+ // This will get inlined, since it is private.
+ private void checkBoundsExclusive(int index)
+ {
+ if (index < 0 || index >= size)
+ throw new IndexOutOfBoundsException("Index: " + index +
+ ", Size:" + size);
+ }
+
+ /**
+ * Specified by AbstractList.subList to return the private field size.
+ *
+ * @return the sublist size
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ */
+ public int size()
+ {
+ synchronized (backingList)
+ {
+ checkMod();
+ return size;
+ }
+ }
+
+ public void clear()
+ {
+ synchronized (backingList)
+ {
+ E[] snapshot = backingList.data;
+ E[] newData = (E[]) new Object[snapshot.length - size];
+
+ int toIndex = size + offset;
+
+ System.arraycopy(snapshot, 0, newData, 0, offset);
+ System.arraycopy(snapshot, toIndex, newData, offset,
+ snapshot.length - toIndex);
+
+ backingList.data = newData;
+ this.data = backingList.data;
+ this.size = 0;
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to delegate to the backing list.
+ *
+ * @param index the location to modify
+ * @param o the new value
+ * @return the old value
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws UnsupportedOperationException if the backing list does not
+ * support the set operation
+ * @throws IndexOutOfBoundsException if index < 0 || index >= size()
+ * @throws ClassCastException if o cannot be added to the backing list due
+ * to its type
+ * @throws IllegalArgumentException if o cannot be added to the backing list
+ * for some other reason
+ */
+ public E set(int index, E o)
+ {
+ synchronized (backingList)
+ {
+ checkMod();
+ checkBoundsExclusive(index);
+
+ E el = backingList.set(index + offset, o);
+ this.data = backingList.data;
+
+ return el;
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to delegate to the backing list.
+ *
+ * @param index the location to get from
+ * @return the object at that location
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws IndexOutOfBoundsException if index < 0 || index >= size()
+ */
+ public E get(int index)
+ {
+ synchronized (backingList)
+ {
+ checkMod();
+ checkBoundsExclusive(index);
+
+ return backingList.get(index + offset);
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to delegate to the backing list.
+ *
+ * @param index the index to insert at
+ * @param o the object to add
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws IndexOutOfBoundsException if index < 0 || index > size()
+ * @throws UnsupportedOperationException if the backing list does not
+ * support the add operation.
+ * @throws ClassCastException if o cannot be added to the backing list due
+ * to its type.
+ * @throws IllegalArgumentException if o cannot be added to the backing
+ * list for some other reason.
+ */
+ public void add(int index, E o)
+ {
+ synchronized (backingList)
+ {
+ checkMod();
+ checkBoundsInclusive(index);
+
+ backingList.add(index + offset, o);
+
+ this.data = backingList.data;
+ size++;
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to delegate to the backing list.
+ *
+ * @param index the index to remove
+ * @return the removed object
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws IndexOutOfBoundsException if index < 0 || index >= size()
+ * @throws UnsupportedOperationException if the backing list does not
+ * support the remove operation
+ */
+ public E remove(int index)
+ {
+ synchronized (backingList)
+ {
+ checkMod();
+ checkBoundsExclusive(index);
+ E o = backingList.remove(index + offset);
+
+ this.data = backingList.data;
+ size--;
+
+ return o;
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to delegate to the backing list.
+ *
+ * @param index the location to insert at
+ * @param c the collection to insert
+ * @return true if this list was modified, in other words, c is non-empty
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws IndexOutOfBoundsException if index < 0 || index > size()
+ * @throws UnsupportedOperationException if this list does not support the
+ * addAll operation
+ * @throws ClassCastException if some element of c cannot be added to this
+ * list due to its type
+ * @throws IllegalArgumentException if some element of c cannot be added
+ * to this list for some other reason
+ * @throws NullPointerException if the specified collection is null
+ */
+ public boolean addAll(int index, Collection<? extends E> c)
+ {
+ synchronized (backingList)
+ {
+ checkMod();
+ checkBoundsInclusive(index);
+ int csize = c.size();
+ boolean result = backingList.addAll(offset + index, c);
+
+ this.data = backingList.data;
+ size += csize;
+
+ return result;
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to return addAll(size, c).
+ *
+ * @param c the collection to insert
+ * @return true if this list was modified, in other words, c is non-empty
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws UnsupportedOperationException if this list does not support the
+ * addAll operation
+ * @throws ClassCastException if some element of c cannot be added to this
+ * list due to its type
+ * @throws IllegalArgumentException if some element of c cannot be added
+ * to this list for some other reason
+ * @throws NullPointerException if the specified collection is null
+ */
+ public boolean addAll(Collection<? extends E> c)
+ {
+ synchronized (backingList)
+ {
+ return addAll(size, c);
+ }
+ }
+
+ /**
+ * Specified by AbstractList.subList to return listIterator().
+ *
+ * @return an iterator over the sublist
+ */
+ public Iterator<E> iterator()
+ {
+ return listIterator();
+ }
+
+ /**
+ * Specified by AbstractList.subList to return a wrapper around the
+ * backing list's iterator.
+ *
+ * @param index the start location of the iterator
+ * @return a list iterator over the sublist
+ * @throws ConcurrentModificationException if the backing list has been
+ * modified externally to this sublist
+ * @throws IndexOutOfBoundsException if the value is out of range
+ */
+ public ListIterator<E> listIterator(final int index)
+ {
+ checkMod();
+ checkBoundsInclusive(index);
+
+ return new ListIterator<E>()
+ {
+ private final ListIterator<E> i =
+ backingList.listIterator(index + offset);
+ private int position = index;
+
+ /**
+ * Tests to see if there are any more objects to
+ * return.
+ *
+ * @return True if the end of the list has not yet been
+ * reached.
+ */
+ public boolean hasNext()
+ {
+ return position < size;
+ }
+
+ /**
+ * Tests to see if there are objects prior to the
+ * current position in the list.
+ *
+ * @return True if objects exist prior to the current
+ * position of the iterator.
+ */
+ public boolean hasPrevious()
+ {
+ return position > 0;
+ }
+
+ /**
+ * Retrieves the next object from the list.
+ *
+ * @return The next object.
+ * @throws NoSuchElementException if there are no
+ * more objects to retrieve.
+ * @throws ConcurrentModificationException if the
+ * list has been modified elsewhere.
+ */
+ public E next()
+ {
+ if (position == size)
+ throw new NoSuchElementException();
+ position++;
+ return i.next();
+ }
+
+ /**
+ * Retrieves the previous object from the list.
+ *
+ * @return The next object.
+ * @throws NoSuchElementException if there are no
+ * previous objects to retrieve.
+ * @throws ConcurrentModificationException if the
+ * list has been modified elsewhere.
+ */
+ public E previous()
+ {
+ if (position == 0)
+ throw new NoSuchElementException();
+ position--;
+ return i.previous();
+ }
+
+ /**
+ * Returns the index of the next element in the
+ * list, which will be retrieved by <code>next()</code>
+ *
+ * @return The index of the next element.
+ */
+ public int nextIndex()
+ {
+ return i.nextIndex() - offset;
+ }
+
+ /**
+ * Returns the index of the previous element in the
+ * list, which will be retrieved by <code>previous()</code>
+ *
+ * @return The index of the previous element.
+ */
+ public int previousIndex()
+ {
+ return i.previousIndex() - offset;
+ }
+
+ /**
+ * Removes the last object retrieved by <code>next()</code>
+ * from the list, if the list supports object removal.
+ *
+ * @throws IllegalStateException if the iterator is positioned
+ * before the start of the list or the last object has already
+ * been removed.
+ * @throws UnsupportedOperationException if the list does
+ * not support removing elements.
+ */
+ public void remove()
+ {
+ throw new UnsupportedOperationException("Modification not supported " +
+ "on CopyOnWriteArrayList iterators");
+ }
+
+ /**
+ * Replaces the last object retrieved by <code>next()</code>
+ * or <code>previous</code> with o, if the list supports object
+ * replacement and an add or remove operation has not already
+ * been performed.
+ *
+ * @throws IllegalStateException if the iterator is positioned
+ * before the start of the list or the last object has already
+ * been removed.
+ * @throws UnsupportedOperationException if the list doesn't support
+ * the addition or removal of elements.
+ * @throws ClassCastException if the type of o is not a valid type
+ * for this list.
+ * @throws IllegalArgumentException if something else related to o
+ * prevents its addition.
+ * @throws ConcurrentModificationException if the list
+ * has been modified elsewhere.
+ */
+ public void set(E o)
+ {
+ throw new UnsupportedOperationException("Modification not supported " +
+ "on CopyOnWriteArrayList iterators");
+ }
+
+ /**
+ * Adds the supplied object before the element that would be returned
+ * by a call to <code>next()</code>, if the list supports addition.
+ *
+ * @param o The object to add to the list.
+ * @throws UnsupportedOperationException if the list doesn't support
+ * the addition of new elements.
+ * @throws ClassCastException if the type of o is not a valid type
+ * for this list.
+ * @throws IllegalArgumentException if something else related to o
+ * prevents its addition.
+ * @throws ConcurrentModificationException if the list
+ * has been modified elsewhere.
+ */
+ public void add(E o)
+ {
+ throw new UnsupportedOperationException("Modification not supported " +
+ "on CopyOnWriteArrayList iterators");
+ }
+ };
+ }
+ } // class SubList
+
+ /**
+ * This class is a RandomAccess version of SubList, as required by
+ * {@link AbstractList#subList(int, int)}.
+ *
+ * @author Eric Blake (ebb9@email.byu.edu)
+ */
+ private static final class RandomAccessSubList<E> extends SubList<E>
+ implements RandomAccess
+ {
+ /**
+ * Construct the sublist.
+ *
+ * @param backing the list this comes from
+ * @param fromIndex the lower bound, inclusive
+ * @param toIndex the upper bound, exclusive
+ */
+ RandomAccessSubList(CopyOnWriteArrayList<E> backing, int fromIndex, int toIndex)
+ {
+ super(backing, fromIndex, toIndex);
+ }
+ } // class RandomAccessSubList
/**
* Serializes this object to the given stream.
*/
public Attributes getAttributes(String entryName)
{
- return (Attributes) getEntries().get(entryName);
+ return getEntries().get(entryName);
}
/**
import java.security.PrivilegedAction;
/**
- * A Logger is used for logging information about events. Usually, there
- * is a seprate logger for each subsystem or component, although there
- * is a shared instance for components that make only occasional use of
- * the logging framework.
- *
- * <p>It is common to name a logger after the name of a corresponding
- * Java package. Loggers are organized into a hierarchical namespace;
- * for example, the logger <code>"org.gnu.foo"</code> is the
- * <em>parent</em> of logger <code>"org.gnu.foo.bar"</code>.
- *
- * <p>A logger for a named subsystem can be obtained through {@link
- * java.util.logging.Logger#getLogger(java.lang.String)}. However,
- * only code which has been granted the permission to control the
- * logging infrastructure will be allowed to customize that logger.
- * Untrusted code can obtain a private, anonymous logger through
- * {@link #getAnonymousLogger()} if it wants to perform any
- * modifications to the logger.
- *
- * <p>FIXME: Write more documentation.
- *
+ * A Logger is used for logging information about events. Usually, there is a
+ * seprate logger for each subsystem or component, although there is a shared
+ * instance for components that make only occasional use of the logging
+ * framework.
+ * <p>
+ * It is common to name a logger after the name of a corresponding Java package.
+ * Loggers are organized into a hierarchical namespace; for example, the logger
+ * <code>"org.gnu.foo"</code> is the <em>parent</em> of logger
+ * <code>"org.gnu.foo.bar"</code>.
+ * <p>
+ * A logger for a named subsystem can be obtained through {@link
+ * java.util.logging.Logger#getLogger(java.lang.String)}. However, only code
+ * which has been granted the permission to control the logging infrastructure
+ * will be allowed to customize that logger. Untrusted code can obtain a
+ * private, anonymous logger through {@link #getAnonymousLogger()} if it wants
+ * to perform any modifications to the logger.
+ * <p>
+ * FIXME: Write more documentation.
+ *
* @author Sascha Brawer (brawer@acm.org)
*/
public class Logger
{
-
static final Logger root = new Logger("", null);
/**
- * A logger provided to applications that make only occasional use
- * of the logging framework, typically early prototypes. Serious
- * products are supposed to create and use their own Loggers, so
- * they can be controlled individually.
+ * A logger provided to applications that make only occasional use of the
+ * logging framework, typically early prototypes. Serious products are
+ * supposed to create and use their own Loggers, so they can be controlled
+ * individually.
*/
public static final Logger global;
+ /**
+ * Use to lock methods on this class instead of calling synchronize on methods
+ * to avoid deadlocks. Yeah, no kidding, we got them :)
+ */
+ private static final Object[] lock = new Object[0];
+
static
{
// Our class might be initialized from an unprivileged context
- global = (Logger) AccessController.doPrivileged
- (new PrivilegedAction()
- {
- public Object run()
- {
- return getLogger("global");
- }
- });
+ global = (Logger) AccessController.doPrivileged(new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return getLogger("global");
+ }
+ });
}
-
/**
- * The name of the Logger, or <code>null</code> if the logger is
- * anonymous.
- *
- * <p>A previous version of the GNU Classpath implementation granted
- * untrusted code the permission to control any logger whose name
- * was null. However, test code revealed that the Sun J2SE 1.4
- * reference implementation enforces the security control for any
- * logger that was not created through getAnonymousLogger, even if
- * it has a null name. Therefore, a separate flag {@link
- * Logger#anonymous} was introduced.
+ * The name of the Logger, or <code>null</code> if the logger is anonymous.
+ * <p>
+ * A previous version of the GNU Classpath implementation granted untrusted
+ * code the permission to control any logger whose name was null. However,
+ * test code revealed that the Sun J2SE 1.4 reference implementation enforces
+ * the security control for any logger that was not created through
+ * getAnonymousLogger, even if it has a null name. Therefore, a separate flag
+ * {@link Logger#anonymous} was introduced.
*/
private final String name;
-
/**
* The name of the resource bundle used for localization.
- *
- * <p>This variable cannot be declared as <code>final</code>
- * because its value can change as a result of calling
- * getLogger(String,String).
+ * <p>
+ * This variable cannot be declared as <code>final</code> because its value
+ * can change as a result of calling getLogger(String,String).
*/
private String resourceBundleName;
-
/**
* The resource bundle used for localization.
- *
- * <p>This variable cannot be declared as <code>final</code>
- * because its value can change as a result of calling
- * getLogger(String,String).
+ * <p>
+ * This variable cannot be declared as <code>final</code> because its value
+ * can change as a result of calling getLogger(String,String).
*/
private ResourceBundle resourceBundle;
private Filter filter;
private final List handlerList = new java.util.ArrayList(4);
+
private Handler[] handlers = new Handler[0];
/**
- * Indicates whether or not this logger is anonymous. While
- * a LoggingPermission is required for any modifications to
- * a normal logger, untrusted code can obtain an anonymous logger
- * and modify it according to its needs.
- *
- * <p>A previous version of the GNU Classpath implementation
- * granted access to every logger whose name was null.
- * However, test code revealed that the Sun J2SE 1.4 reference
- * implementation enforces the security control for any logger
- * that was not created through getAnonymousLogger, even
- * if it has a null name.
+ * Indicates whether or not this logger is anonymous. While a
+ * LoggingPermission is required for any modifications to a normal logger,
+ * untrusted code can obtain an anonymous logger and modify it according to
+ * its needs.
+ * <p>
+ * A previous version of the GNU Classpath implementation granted access to
+ * every logger whose name was null. However, test code revealed that the Sun
+ * J2SE 1.4 reference implementation enforces the security control for any
+ * logger that was not created through getAnonymousLogger, even if it has a
+ * null name.
*/
private boolean anonymous;
-
private boolean useParentHandlers;
private Level level;
private Logger parent;
/**
- * Constructs a Logger for a subsystem. Most applications do not
- * need to create new Loggers explicitly; instead, they should call
- * the static factory methods
- * {@link #getLogger(java.lang.String,java.lang.String) getLogger}
+ * Constructs a Logger for a subsystem. Most applications do not need to
+ * create new Loggers explicitly; instead, they should call the static factory
+ * methods {@link #getLogger(java.lang.String,java.lang.String) getLogger}
* (with ResourceBundle for localization) or
- * {@link #getLogger(java.lang.String) getLogger} (without
- * ResourceBundle), respectively.
- *
- * @param name the name for the logger, for example "java.awt"
- * or "com.foo.bar". The name should be based on
- * the name of the package issuing log records
- * and consist of dot-separated Java identifiers.
- *
- * @param resourceBundleName the name of a resource bundle
- * for localizing messages, or <code>null</code>
- * to indicate that messages do not need to be localized.
- *
+ * {@link #getLogger(java.lang.String) getLogger} (without ResourceBundle),
+ * respectively.
+ *
+ * @param name the name for the logger, for example "java.awt" or
+ * "com.foo.bar". The name should be based on the name of the
+ * package issuing log records and consist of dot-separated Java
+ * identifiers.
+ * @param resourceBundleName the name of a resource bundle for localizing
+ * messages, or <code>null</code> to indicate that messages do
+ * not need to be localized.
* @throws java.util.MissingResourceException if
- * <code>resourceBundleName</code> is not <code>null</code>
- * and no such bundle could be located.
+ * <code>resourceBundleName</code> is not <code>null</code>
+ * and no such bundle could be located.
*/
protected Logger(String name, String resourceBundleName)
- throws MissingResourceException
+ throws MissingResourceException
{
this.name = name;
this.resourceBundleName = resourceBundleName;
level = null;
- /* This is null when the root logger is being constructed,
- * and the root logger afterwards.
+ /*
+ * This is null when the root logger is being constructed, and the root
+ * logger afterwards.
*/
parent = root;
useParentHandlers = (parent != null);
}
-
-
/**
- * Finds a registered logger for a subsystem, or creates one in
- * case no logger has been registered yet.
- *
- * @param name the name for the logger, for example "java.awt"
- * or "com.foo.bar". The name should be based on
- * the name of the package issuing log records
- * and consist of dot-separated Java identifiers.
- *
- * @throws IllegalArgumentException if a logger for the subsystem
- * identified by <code>name</code> has already been created,
- * but uses a a resource bundle for localizing messages.
- *
- * @throws NullPointerException if <code>name</code> is
- * <code>null</code>.
- *
- * @return a logger for the subsystem specified by <code>name</code>
- * that does not localize messages.
+ * Finds a registered logger for a subsystem, or creates one in case no logger
+ * has been registered yet.
+ *
+ * @param name the name for the logger, for example "java.awt" or
+ * "com.foo.bar". The name should be based on the name of the
+ * package issuing log records and consist of dot-separated Java
+ * identifiers.
+ * @throws IllegalArgumentException if a logger for the subsystem identified
+ * by <code>name</code> has already been created, but uses a a
+ * resource bundle for localizing messages.
+ * @throws NullPointerException if <code>name</code> is <code>null</code>.
+ * @return a logger for the subsystem specified by <code>name</code> that
+ * does not localize messages.
*/
public static Logger getLogger(String name)
{
return getLogger(name, null);
}
-
/**
- * Finds a registered logger for a subsystem, or creates one in case
- * no logger has been registered yet.
- *
- * <p>If a logger with the specified name has already been
- * registered, the behavior depends on the resource bundle that is
- * currently associated with the existing logger.
- *
- * <ul><li>If the existing logger uses the same resource bundle as
- * specified by <code>resourceBundleName</code>, the existing logger
- * is returned.</li>
- *
- * <li>If the existing logger currently does not localize messages,
- * the existing logger is modified to use the bundle specified by
- * <code>resourceBundleName</code>. The existing logger is then
- * returned. Therefore, all subsystems currently using this logger
- * will produce localized messages from now on.</li>
- *
- * <li>If the existing logger already has an associated resource
- * bundle, but a different one than specified by
- * <code>resourceBundleName</code>, an
- * <code>IllegalArgumentException</code> is thrown.</li></ul>
- *
- * @param name the name for the logger, for example "java.awt"
- * or "org.gnu.foo". The name should be based on
- * the name of the package issuing log records
- * and consist of dot-separated Java identifiers.
- *
- * @param resourceBundleName the name of a resource bundle
- * for localizing messages, or <code>null</code>
- * to indicate that messages do not need to be localized.
- *
+ * Finds a registered logger for a subsystem, or creates one in case no logger
+ * has been registered yet.
+ * <p>
+ * If a logger with the specified name has already been registered, the
+ * behavior depends on the resource bundle that is currently associated with
+ * the existing logger.
+ * <ul>
+ * <li>If the existing logger uses the same resource bundle as specified by
+ * <code>resourceBundleName</code>, the existing logger is returned.</li>
+ * <li>If the existing logger currently does not localize messages, the
+ * existing logger is modified to use the bundle specified by
+ * <code>resourceBundleName</code>. The existing logger is then returned.
+ * Therefore, all subsystems currently using this logger will produce
+ * localized messages from now on.</li>
+ * <li>If the existing logger already has an associated resource bundle, but
+ * a different one than specified by <code>resourceBundleName</code>, an
+ * <code>IllegalArgumentException</code> is thrown.</li>
+ * </ul>
+ *
+ * @param name the name for the logger, for example "java.awt" or
+ * "org.gnu.foo". The name should be based on the name of the
+ * package issuing log records and consist of dot-separated Java
+ * identifiers.
+ * @param resourceBundleName the name of a resource bundle for localizing
+ * messages, or <code>null</code> to indicate that messages do
+ * not need to be localized.
* @return a logger for the subsystem specified by <code>name</code>.
- *
* @throws java.util.MissingResourceException if
- * <code>resourceBundleName</code> is not <code>null</code>
- * and no such bundle could be located.
- *
- * @throws IllegalArgumentException if a logger for the subsystem
- * identified by <code>name</code> has already been created,
- * but uses a different resource bundle for localizing
- * messages.
- *
- * @throws NullPointerException if <code>name</code> is
- * <code>null</code>.
+ * <code>resourceBundleName</code> is not <code>null</code>
+ * and no such bundle could be located.
+ * @throws IllegalArgumentException if a logger for the subsystem identified
+ * by <code>name</code> has already been created, but uses a
+ * different resource bundle for localizing messages.
+ * @throws NullPointerException if <code>name</code> is <code>null</code>.
*/
public static Logger getLogger(String name, String resourceBundleName)
{
LogManager lm = LogManager.getLogManager();
- Logger result;
+ Logger result;
if (name == null)
throw new NullPointerException();
- /* Without synchronized(lm), it could happen that another thread
- * would create a logger between our calls to getLogger and
- * addLogger. While addLogger would indicate this by returning
- * false, we could not be sure that this other logger was still
- * existing when we called getLogger a second time in order
- * to retrieve it -- note that LogManager is only allowed to
- * keep weak references to registered loggers, so Loggers
- * can be garbage collected at any time in general, and between
- * our call to addLogger and our second call go getLogger
- * in particular.
- *
- * Of course, we assume here that LogManager.addLogger etc.
- * are synchronizing on the global LogManager object. There
- * is a comment in the implementation of LogManager.addLogger
- * referring to this comment here, so that any change in
- * the synchronization of LogManager will be reflected here.
+ /*
+ * Without synchronized(lm), it could happen that another thread would
+ * create a logger between our calls to getLogger and addLogger. While
+ * addLogger would indicate this by returning false, we could not be sure
+ * that this other logger was still existing when we called getLogger a
+ * second time in order to retrieve it -- note that LogManager is only
+ * allowed to keep weak references to registered loggers, so Loggers can be
+ * garbage collected at any time in general, and between our call to
+ * addLogger and our second call go getLogger in particular. Of course, we
+ * assume here that LogManager.addLogger etc. are synchronizing on the
+ * global LogManager object. There is a comment in the implementation of
+ * LogManager.addLogger referring to this comment here, so that any change
+ * in the synchronization of LogManager will be reflected here.
*/
- synchronized (lm)
- {
- result = lm.getLogger(name);
- if (result == null)
- {
- boolean couldBeAdded;
-
- result = new Logger(name, resourceBundleName);
- couldBeAdded = lm.addLogger(result);
- if (!couldBeAdded)
- throw new IllegalStateException("cannot register new logger");
- }
- else
+ synchronized (lock)
{
- /* The logger already exists. Make sure it uses
- * the same resource bundle for localizing messages.
- */
- String existingBundleName = result.getResourceBundleName();
-
- /* The Sun J2SE 1.4 reference implementation will return the
- * registered logger object, even if it does not have a resource
- * bundle associated with it. However, it seems to change the
- * resourceBundle of the registered logger to the bundle
- * whose name was passed to getLogger.
- */
- if ((existingBundleName == null) && (resourceBundleName != null))
- {
- /* If ResourceBundle.getBundle throws an exception, the
- * existing logger will be unchanged. This would be
- * different if the assignment to resourceBundleName
- * came first.
- */
- result.resourceBundle = ResourceBundle.getBundle(resourceBundleName);
- result.resourceBundleName = resourceBundleName;
- return result;
- }
-
- if ((existingBundleName != resourceBundleName)
- && ((existingBundleName == null)
- || !existingBundleName.equals(resourceBundleName)))
- {
- throw new IllegalArgumentException();
- }
+ synchronized (lm)
+ {
+ result = lm.getLogger(name);
+ if (result == null)
+ {
+ boolean couldBeAdded;
+
+ result = new Logger(name, resourceBundleName);
+ couldBeAdded = lm.addLogger(result);
+ if (! couldBeAdded)
+ throw new IllegalStateException("cannot register new logger");
+ }
+ else
+ {
+ /*
+ * The logger already exists. Make sure it uses the same
+ * resource bundle for localizing messages.
+ */
+ String existingBundleName = result.getResourceBundleName();
+
+ /*
+ * The Sun J2SE 1.4 reference implementation will return the
+ * registered logger object, even if it does not have a resource
+ * bundle associated with it. However, it seems to change the
+ * resourceBundle of the registered logger to the bundle whose
+ * name was passed to getLogger.
+ */
+ if ((existingBundleName == null) &&
+ (resourceBundleName != null))
+ {
+ /*
+ * If ResourceBundle.getBundle throws an exception, the
+ * existing logger will be unchanged. This would be
+ * different if the assignment to resourceBundleName came
+ * first.
+ */
+ result.resourceBundle =
+ ResourceBundle.getBundle(resourceBundleName);
+
+ result.resourceBundleName = resourceBundleName;
+ return result;
+ }
+
+ if ((existingBundleName != resourceBundleName)
+ && ((existingBundleName == null)
+ || !existingBundleName.equals(resourceBundleName)))
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+ }
}
- }
return result;
}
-
/**
- * Creates a new, unnamed logger. Unnamed loggers are not
- * registered in the namespace of the LogManager, and no special
- * security permission is required for changing their state.
- * Therefore, untrusted applets are able to modify their private
- * logger instance obtained through this method.
- *
- * <p>The parent of the newly created logger will the the root
- * logger, from which the level threshold and the handlers are
- * inherited.
+ * Creates a new, unnamed logger. Unnamed loggers are not registered in the
+ * namespace of the LogManager, and no special security permission is required
+ * for changing their state. Therefore, untrusted applets are able to modify
+ * their private logger instance obtained through this method.
+ * <p>
+ * The parent of the newly created logger will the the root logger, from which
+ * the level threshold and the handlers are inherited.
*/
public static Logger getAnonymousLogger()
{
return getAnonymousLogger(null);
}
-
/**
- * Creates a new, unnamed logger. Unnamed loggers are not
- * registered in the namespace of the LogManager, and no special
- * security permission is required for changing their state.
- * Therefore, untrusted applets are able to modify their private
- * logger instance obtained through this method.
- *
- * <p>The parent of the newly created logger will the the root
- * logger, from which the level threshold and the handlers are
- * inherited.
- *
- * @param resourceBundleName the name of a resource bundle
- * for localizing messages, or <code>null</code>
- * to indicate that messages do not need to be localized.
- *
+ * Creates a new, unnamed logger. Unnamed loggers are not registered in the
+ * namespace of the LogManager, and no special security permission is required
+ * for changing their state. Therefore, untrusted applets are able to modify
+ * their private logger instance obtained through this method.
+ * <p>
+ * The parent of the newly created logger will the the root logger, from which
+ * the level threshold and the handlers are inherited.
+ *
+ * @param resourceBundleName the name of a resource bundle for localizing
+ * messages, or <code>null</code> to indicate that messages do
+ * not need to be localized.
* @throws java.util.MissingResourceException if
- * <code>resourceBundleName</code> is not <code>null</code>
- * and no such bundle could be located.
+ * <code>resourceBundleName</code> is not <code>null</code>
+ * and no such bundle could be located.
*/
public static Logger getAnonymousLogger(String resourceBundleName)
- throws MissingResourceException
+ throws MissingResourceException
{
- Logger result;
+ Logger result;
result = new Logger(null, resourceBundleName);
result.anonymous = true;
return result;
}
-
/**
- * Returns the name of the resource bundle that is being used for
- * localizing messages.
- *
- * @return the name of the resource bundle used for localizing messages,
- * or <code>null</code> if the parent's resource bundle
- * is used for this purpose.
+ * Returns the name of the resource bundle that is being used for localizing
+ * messages.
+ *
+ * @return the name of the resource bundle used for localizing messages, or
+ * <code>null</code> if the parent's resource bundle is used for
+ * this purpose.
*/
- public synchronized String getResourceBundleName()
+ public String getResourceBundleName()
{
- return resourceBundleName;
+ synchronized (lock)
+ {
+ return resourceBundleName;
+ }
}
-
/**
- * Returns the resource bundle that is being used for localizing
- * messages.
- *
- * @return the resource bundle used for localizing messages,
- * or <code>null</code> if the parent's resource bundle
- * is used for this purpose.
+ * Returns the resource bundle that is being used for localizing messages.
+ *
+ * @return the resource bundle used for localizing messages, or
+ * <code>null</code> if the parent's resource bundle is used for
+ * this purpose.
*/
- public synchronized ResourceBundle getResourceBundle()
+ public ResourceBundle getResourceBundle()
{
- return resourceBundle;
+ synchronized (lock)
+ {
+ return resourceBundle;
+ }
}
-
/**
- * Returns the severity level threshold for this <code>Handler</code>.
- * All log records with a lower severity level will be discarded;
- * a log record of the same or a higher level will be published
- * unless an installed <code>Filter</code> decides to discard it.
- *
- * @return the severity level below which all log messages will be
- * discarded, or <code>null</code> if the logger inherits
- * the threshold from its parent.
+ * Returns the severity level threshold for this <code>Handler</code>. All
+ * log records with a lower severity level will be discarded; a log record of
+ * the same or a higher level will be published unless an installed
+ * <code>Filter</code> decides to discard it.
+ *
+ * @return the severity level below which all log messages will be discarded,
+ * or <code>null</code> if the logger inherits the threshold from
+ * its parent.
*/
- public synchronized Level getLevel()
+ public Level getLevel()
{
- return level;
+ synchronized (lock)
+ {
+ return level;
+ }
}
-
/**
- * Returns whether or not a message of the specified level
- * would be logged by this logger.
- *
- * @throws NullPointerException if <code>level</code>
- * is <code>null</code>.
+ * Returns whether or not a message of the specified level would be logged by
+ * this logger.
+ *
+ * @throws NullPointerException if <code>level</code> is <code>null</code>.
*/
- public synchronized boolean isLoggable(Level level)
+ public boolean isLoggable(Level level)
{
- if (this.level != null)
- return this.level.intValue() <= level.intValue();
+ synchronized (lock)
+ {
+ if (this.level != null)
+ return this.level.intValue() <= level.intValue();
- if (parent != null)
- return parent.isLoggable(level);
- else
- return false;
+ if (parent != null)
+ return parent.isLoggable(level);
+ else
+ return false;
+ }
}
-
/**
- * Sets the severity level threshold for this <code>Handler</code>.
- * All log records with a lower severity level will be discarded
- * immediately. A log record of the same or a higher level will be
- * published unless an installed <code>Filter</code> decides to
- * discard it.
- *
- * @param level the severity level below which all log messages
- * will be discarded, or <code>null</code> to
- * indicate that the logger should inherit the
- * threshold from its parent.
- *
- * @throws SecurityException if this logger is not anonymous, a
- * security manager exists, and the caller is not granted
- * the permission to control the logging infrastructure by
- * having LoggingPermission("control"). Untrusted code can
- * obtain an anonymous logger through the static factory method
- * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
+ * Sets the severity level threshold for this <code>Handler</code>. All log
+ * records with a lower severity level will be discarded immediately. A log
+ * record of the same or a higher level will be published unless an installed
+ * <code>Filter</code> decides to discard it.
+ *
+ * @param level the severity level below which all log messages will be
+ * discarded, or <code>null</code> to indicate that the logger
+ * should inherit the threshold from its parent.
+ * @throws SecurityException if this logger is not anonymous, a security
+ * manager exists, and the caller is not granted the permission to
+ * control the logging infrastructure by having
+ * LoggingPermission("control"). Untrusted code can obtain an
+ * anonymous logger through the static factory method
+ * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
- public synchronized void setLevel(Level level)
+ public void setLevel(Level level)
{
- /* An application is allowed to control an anonymous logger
- * without having the permission to control the logging
- * infrastructure.
- */
- if (!anonymous)
- LogManager.getLogManager().checkAccess();
-
- this.level = level;
+ synchronized (lock)
+ {
+ /*
+ * An application is allowed to control an anonymous logger without
+ * having the permission to control the logging infrastructure.
+ */
+ if (! anonymous)
+ LogManager.getLogManager().checkAccess();
+
+ this.level = level;
+ }
}
-
- public synchronized Filter getFilter()
+ public Filter getFilter()
{
- return filter;
+ synchronized (lock)
+ {
+ return filter;
+ }
}
-
/**
- * @throws SecurityException if this logger is not anonymous, a
- * security manager exists, and the caller is not granted
- * the permission to control the logging infrastructure by
- * having LoggingPermission("control"). Untrusted code can
- * obtain an anonymous logger through the static factory method
- * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
+ * @throws SecurityException if this logger is not anonymous, a security
+ * manager exists, and the caller is not granted the permission to
+ * control the logging infrastructure by having
+ * LoggingPermission("control"). Untrusted code can obtain an
+ * anonymous logger through the static factory method
+ * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
- public synchronized void setFilter(Filter filter)
- throws SecurityException
+ public void setFilter(Filter filter) throws SecurityException
{
- /* An application is allowed to control an anonymous logger
- * without having the permission to control the logging
- * infrastructure.
- */
- if (!anonymous)
- LogManager.getLogManager().checkAccess();
-
- this.filter = filter;
+ synchronized (lock)
+ {
+ /*
+ * An application is allowed to control an anonymous logger without
+ * having the permission to control the logging infrastructure.
+ */
+ if (! anonymous)
+ LogManager.getLogManager().checkAccess();
+
+ this.filter = filter;
+ }
}
-
-
-
/**
* Returns the name of this logger.
- *
- * @return the name of this logger, or <code>null</code> if
- * the logger is anonymous.
+ *
+ * @return the name of this logger, or <code>null</code> if the logger is
+ * anonymous.
*/
public String getName()
{
- /* Note that the name of a logger cannot be changed during
- * its lifetime, so no synchronization is needed.
+ /*
+ * Note that the name of a logger cannot be changed during its lifetime, so
+ * no synchronization is needed.
*/
return name;
}
-
/**
- * Passes a record to registered handlers, provided the record
- * is considered as loggable both by {@link #isLoggable(Level)}
- * and a possibly installed custom {@link #setFilter(Filter) filter}.
- *
- * <p>If the logger has been configured to use parent handlers,
- * the record will be forwarded to the parent of this logger
- * in addition to being processed by the handlers registered with
- * this logger.
- *
- * <p>The other logging methods in this class are convenience methods
- * that merely create a new LogRecord and pass it to this method.
- * Therefore, subclasses usually just need to override this single
- * method for customizing the logging behavior.
- *
+ * Passes a record to registered handlers, provided the record is considered
+ * as loggable both by {@link #isLoggable(Level)} and a possibly installed
+ * custom {@link #setFilter(Filter) filter}.
+ * <p>
+ * If the logger has been configured to use parent handlers, the record will
+ * be forwarded to the parent of this logger in addition to being processed by
+ * the handlers registered with this logger.
+ * <p>
+ * The other logging methods in this class are convenience methods that merely
+ * create a new LogRecord and pass it to this method. Therefore, subclasses
+ * usually just need to override this single method for customizing the
+ * logging behavior.
+ *
* @param record the log record to be inspected and possibly forwarded.
*/
- public synchronized void log(LogRecord record)
+ public void log(LogRecord record)
{
- if (!isLoggable(record.getLevel()))
- return;
-
- if ((filter != null) && !filter.isLoggable(record))
- return;
-
- /* If no logger name has been set for the log record,
- * use the name of this logger.
- */
- if (record.getLoggerName() == null)
- record.setLoggerName(name);
-
- /* Avoid that some other thread is changing the logger hierarchy
- * while we are traversing it.
- */
- synchronized (LogManager.getLogManager())
- {
- Logger curLogger = this;
-
- do
+ synchronized (lock)
{
- /* The Sun J2SE 1.4 reference implementation seems to call the
- * filter only for the logger whose log method is called,
- * never for any of its parents. Also, parent loggers publish
- * log record whatever their level might be. This is pretty
- * weird, but GNU Classpath tries to be as compatible as
- * possible to the reference implementation.
- */
- for (int i = 0; i < curLogger.handlers.length; i++)
- curLogger.handlers[i].publish(record);
-
- if (curLogger.getUseParentHandlers() == false)
- break;
-
- curLogger = curLogger.getParent();
+ if (!isLoggable(record.getLevel()))
+ return;
+
+ if ((filter != null) && ! filter.isLoggable(record))
+ return;
+
+ /*
+ * If no logger name has been set for the log record, use the name of
+ * this logger.
+ */
+ if (record.getLoggerName() == null)
+ record.setLoggerName(name);
+
+ /*
+ * Avoid that some other thread is changing the logger hierarchy while
+ * we are traversing it.
+ */
+ synchronized (LogManager.getLogManager())
+ {
+ Logger curLogger = this;
+
+ do
+ {
+ /*
+ * The Sun J2SE 1.4 reference implementation seems to call the
+ * filter only for the logger whose log method is called, never
+ * for any of its parents. Also, parent loggers publish log
+ * record whatever their level might be. This is pretty weird,
+ * but GNU Classpath tries to be as compatible as possible to
+ * the reference implementation.
+ */
+ for (int i = 0; i < curLogger.handlers.length; i++)
+ curLogger.handlers[i].publish(record);
+
+ if (curLogger.getUseParentHandlers() == false)
+ break;
+
+ curLogger = curLogger.getParent();
+ }
+ while (parent != null);
+ }
}
- while (parent != null);
- }
}
-
public void log(Level level, String message)
{
if (isLoggable(level))
log(level, message, (Object[]) null);
}
-
- public synchronized void log(Level level,
- String message,
- Object param)
+ public void log(Level level, String message, Object param)
{
- if (isLoggable(level))
+ synchronized (lock)
{
- StackTraceElement caller = getCallerStackFrame();
- logp(level,
- caller != null ? caller.getClassName() : "<unknown>",
- caller != null ? caller.getMethodName() : "<unknown>",
- message,
- param);
+ if (isLoggable(level))
+ {
+ StackTraceElement caller = getCallerStackFrame();
+ logp(level, caller != null ? caller.getClassName() : "<unknown>",
+ caller != null ? caller.getMethodName() : "<unknown>",
+ message, param);
+ }
}
}
-
- public synchronized void log(Level level,
- String message,
- Object[] params)
+ public void log(Level level, String message, Object[] params)
{
- if (isLoggable(level))
+ synchronized (lock)
{
- StackTraceElement caller = getCallerStackFrame();
- logp(level,
- caller != null ? caller.getClassName() : "<unknown>",
- caller != null ? caller.getMethodName() : "<unknown>",
- message,
- params);
+ if (isLoggable(level))
+ {
+ StackTraceElement caller = getCallerStackFrame();
+ logp(level, caller != null ? caller.getClassName() : "<unknown>",
+ caller != null ? caller.getMethodName() : "<unknown>",
+ message, params);
+
+ }
}
}
-
- public synchronized void log(Level level,
- String message,
- Throwable thrown)
+ public void log(Level level, String message, Throwable thrown)
{
- if (isLoggable(level))
+ synchronized (lock)
{
- StackTraceElement caller = getCallerStackFrame();
- logp(level,
- caller != null ? caller.getClassName() : "<unknown>",
- caller != null ? caller.getMethodName() : "<unknown>",
- message,
- thrown);
+ if (isLoggable(level))
+ {
+ StackTraceElement caller = getCallerStackFrame();
+ logp(level, caller != null ? caller.getClassName() : "<unknown>",
+ caller != null ? caller.getMethodName() : "<unknown>",
+ message, thrown);
+ }
}
}
-
- public synchronized void logp(Level level,
- String sourceClass,
- String sourceMethod,
- String message)
+ public void logp(Level level, String sourceClass, String sourceMethod,
+ String message)
{
- logp(level, sourceClass, sourceMethod, message,
- (Object[]) null);
+ synchronized (lock)
+ {
+ logp(level, sourceClass, sourceMethod, message, (Object[]) null);
+ }
}
-
- public synchronized void logp(Level level,
- String sourceClass,
- String sourceMethod,
- String message,
- Object param)
+ public void logp(Level level, String sourceClass, String sourceMethod,
+ String message, Object param)
{
- logp(level, sourceClass, sourceMethod, message,
- new Object[] { param });
- }
+ synchronized (lock)
+ {
+ logp(level, sourceClass, sourceMethod, message, new Object[] { param });
+ }
+ }
- private synchronized ResourceBundle findResourceBundle()
+ private ResourceBundle findResourceBundle()
{
- if (resourceBundle != null)
- return resourceBundle;
+ synchronized (lock)
+ {
+ if (resourceBundle != null)
+ return resourceBundle;
- if (parent != null)
- return parent.findResourceBundle();
+ if (parent != null)
+ return parent.findResourceBundle();
- return null;
+ return null;
+ }
}
-
- private synchronized void logImpl(Level level,
- String sourceClass,
- String sourceMethod,
- String message,
- Object[] params)
+ private void logImpl(Level level, String sourceClass, String sourceMethod,
+ String message, Object[] params)
{
- LogRecord rec = new LogRecord(level, message);
+ synchronized (lock)
+ {
+ LogRecord rec = new LogRecord(level, message);
- rec.setResourceBundle(findResourceBundle());
- rec.setSourceClassName(sourceClass);
- rec.setSourceMethodName(sourceMethod);
- rec.setParameters(params);
+ rec.setResourceBundle(findResourceBundle());
+ rec.setSourceClassName(sourceClass);
+ rec.setSourceMethodName(sourceMethod);
+ rec.setParameters(params);
- log(rec);
+ log(rec);
+ }
}
-
- public synchronized void logp(Level level,
- String sourceClass,
- String sourceMethod,
- String message,
- Object[] params)
+ public void logp(Level level, String sourceClass, String sourceMethod,
+ String message, Object[] params)
{
- logImpl(level, sourceClass, sourceMethod, message, params);
+ synchronized (lock)
+ {
+ logImpl(level, sourceClass, sourceMethod, message, params);
+ }
}
-
- public synchronized void logp(Level level,
- String sourceClass,
- String sourceMethod,
- String message,
- Throwable thrown)
+ public void logp(Level level, String sourceClass, String sourceMethod,
+ String message, Throwable thrown)
{
- LogRecord rec = new LogRecord(level, message);
+ synchronized (lock)
+ {
+ LogRecord rec = new LogRecord(level, message);
- rec.setResourceBundle(resourceBundle);
- rec.setSourceClassName(sourceClass);
- rec.setSourceMethodName(sourceMethod);
- rec.setThrown(thrown);
+ rec.setResourceBundle(resourceBundle);
+ rec.setSourceClassName(sourceClass);
+ rec.setSourceMethodName(sourceMethod);
+ rec.setThrown(thrown);
- log(rec);
+ log(rec);
+ }
}
-
- public synchronized void logrb(Level level,
- String sourceClass,
- String sourceMethod,
- String bundleName,
- String message)
+ public void logrb(Level level, String sourceClass, String sourceMethod,
+ String bundleName, String message)
{
- logrb(level, sourceClass, sourceMethod, bundleName,
- message, (Object[]) null);
+ synchronized (lock)
+ {
+ logrb(level, sourceClass, sourceMethod, bundleName, message,
+ (Object[]) null);
+ }
}
-
- public synchronized void logrb(Level level,
- String sourceClass,
- String sourceMethod,
- String bundleName,
- String message,
- Object param)
+ public void logrb(Level level, String sourceClass, String sourceMethod,
+ String bundleName, String message, Object param)
{
- logrb(level, sourceClass, sourceMethod, bundleName,
- message, new Object[] { param });
+ synchronized (lock)
+ {
+ logrb(level, sourceClass, sourceMethod, bundleName, message,
+ new Object[] { param });
+ }
}
-
- public synchronized void logrb(Level level,
- String sourceClass,
- String sourceMethod,
- String bundleName,
- String message,
- Object[] params)
+ public void logrb(Level level, String sourceClass, String sourceMethod,
+ String bundleName, String message, Object[] params)
{
- LogRecord rec = new LogRecord(level, message);
+ synchronized (lock)
+ {
+ LogRecord rec = new LogRecord(level, message);
- rec.setResourceBundleName(bundleName);
- rec.setSourceClassName(sourceClass);
- rec.setSourceMethodName(sourceMethod);
- rec.setParameters(params);
+ rec.setResourceBundleName(bundleName);
+ rec.setSourceClassName(sourceClass);
+ rec.setSourceMethodName(sourceMethod);
+ rec.setParameters(params);
- log(rec);
+ log(rec);
+ }
}
-
- public synchronized void logrb(Level level,
- String sourceClass,
- String sourceMethod,
- String bundleName,
- String message,
- Throwable thrown)
+ public void logrb(Level level, String sourceClass, String sourceMethod,
+ String bundleName, String message, Throwable thrown)
{
- LogRecord rec = new LogRecord(level, message);
+ synchronized (lock)
+ {
+ LogRecord rec = new LogRecord(level, message);
- rec.setResourceBundleName(bundleName);
- rec.setSourceClassName(sourceClass);
- rec.setSourceMethodName(sourceMethod);
- rec.setThrown(thrown);
+ rec.setResourceBundleName(bundleName);
+ rec.setSourceClassName(sourceClass);
+ rec.setSourceMethodName(sourceMethod);
+ rec.setThrown(thrown);
- log(rec);
+ log(rec);
+ }
}
-
- public synchronized void entering(String sourceClass,
- String sourceMethod)
+ public void entering(String sourceClass, String sourceMethod)
{
- if (isLoggable(Level.FINER))
- logp(Level.FINER, sourceClass, sourceMethod, "ENTRY");
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINER))
+ logp(Level.FINER, sourceClass, sourceMethod, "ENTRY");
+ }
}
-
- public synchronized void entering(String sourceClass,
- String sourceMethod,
- Object param)
+ public void entering(String sourceClass, String sourceMethod, Object param)
{
- if (isLoggable(Level.FINER))
- logp(Level.FINER, sourceClass, sourceMethod, "ENTRY {0}", param);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINER))
+ logp(Level.FINER, sourceClass, sourceMethod, "ENTRY {0}", param);
+ }
}
-
- public synchronized void entering(String sourceClass,
- String sourceMethod,
- Object[] params)
+ public void entering(String sourceClass, String sourceMethod, Object[] params)
{
- if (isLoggable(Level.FINER))
- {
- StringBuffer buf = new StringBuffer(80);
- buf.append("ENTRY");
- for (int i = 0; i < params.length; i++)
+ synchronized (lock)
{
- buf.append(" {");
- buf.append(i);
- buf.append('}');
+ if (isLoggable(Level.FINER))
+ {
+ StringBuffer buf = new StringBuffer(80);
+ buf.append("ENTRY");
+ for (int i = 0; i < params.length; i++)
+ {
+ buf.append(" {");
+ buf.append(i);
+ buf.append('}');
+ }
+
+ logp(Level.FINER, sourceClass, sourceMethod, buf.toString(), params);
+ }
}
-
- logp(Level.FINER, sourceClass, sourceMethod, buf.toString(), params);
- }
}
-
- public synchronized void exiting(String sourceClass,
- String sourceMethod)
+ public void exiting(String sourceClass, String sourceMethod)
{
- if (isLoggable(Level.FINER))
- logp(Level.FINER, sourceClass, sourceMethod, "RETURN");
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINER))
+ logp(Level.FINER, sourceClass, sourceMethod, "RETURN");
+ }
}
-
- public synchronized void exiting(String sourceClass,
- String sourceMethod,
- Object result)
+ public void exiting(String sourceClass, String sourceMethod, Object result)
{
- if (isLoggable(Level.FINER))
- logp(Level.FINER, sourceClass, sourceMethod, "RETURN {0}", result);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINER))
+ logp(Level.FINER, sourceClass, sourceMethod, "RETURN {0}", result);
+ }
}
-
- public synchronized void throwing(String sourceClass,
- String sourceMethod,
- Throwable thrown)
+ public void throwing(String sourceClass, String sourceMethod, Throwable thrown)
{
- if (isLoggable(Level.FINER))
- logp(Level.FINER, sourceClass, sourceMethod, "THROW", thrown);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINER))
+ logp(Level.FINER, sourceClass, sourceMethod, "THROW", thrown);
+ }
}
-
/**
- * Logs a message with severity level SEVERE, indicating a serious
- * failure that prevents normal program execution. Messages at this
- * level should be understandable to an inexperienced, non-technical
- * end user. Ideally, they explain in simple words what actions the
- * user can take in order to resolve the problem.
- *
+ * Logs a message with severity level SEVERE, indicating a serious failure
+ * that prevents normal program execution. Messages at this level should be
+ * understandable to an inexperienced, non-technical end user. Ideally, they
+ * explain in simple words what actions the user can take in order to resolve
+ * the problem.
+ *
* @see Level#SEVERE
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource
- * bundle. While it is possible to pass
- * <code>null</code>, this is not recommended, since
- * a logging message without text is unlikely to be
- * helpful.
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void severe(String message)
+ public void severe(String message)
{
- if (isLoggable(Level.SEVERE))
- log(Level.SEVERE, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.SEVERE))
+ log(Level.SEVERE, message);
+ }
}
-
/**
- * Logs a message with severity level WARNING, indicating a
- * potential problem that does not prevent normal program execution.
- * Messages at this level should be understandable to an
- * inexperienced, non-technical end user. Ideally, they explain in
- * simple words what actions the user can take in order to resolve
- * the problem.
- *
+ * Logs a message with severity level WARNING, indicating a potential problem
+ * that does not prevent normal program execution. Messages at this level
+ * should be understandable to an inexperienced, non-technical end user.
+ * Ideally, they explain in simple words what actions the user can take in
+ * order to resolve the problem.
+ *
* @see Level#WARNING
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource
- * bundle. While it is possible to pass
- * <code>null</code>, this is not recommended, since
- * a logging message without text is unlikely to be
- * helpful.
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void warning(String message)
+ public void warning(String message)
{
- if (isLoggable(Level.WARNING))
- log(Level.WARNING, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.WARNING))
+ log(Level.WARNING, message);
+ }
}
-
/**
- * Logs a message with severity level INFO. {@link Level#INFO} is
- * intended for purely informational messages that do not indicate
- * error or warning situations. In the default logging
- * configuration, INFO messages will be written to the system
- * console. For this reason, the INFO level should be used only for
- * messages that are important to end users and system
- * administrators. Messages at this level should be understandable
- * to an inexperienced, non-technical user.
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource
- * bundle. While it is possible to pass
- * <code>null</code>, this is not recommended, since
- * a logging message without text is unlikely to be
- * helpful.
+ * Logs a message with severity level INFO. {@link Level#INFO} is intended for
+ * purely informational messages that do not indicate error or warning
+ * situations. In the default logging configuration, INFO messages will be
+ * written to the system console. For this reason, the INFO level should be
+ * used only for messages that are important to end users and system
+ * administrators. Messages at this level should be understandable to an
+ * inexperienced, non-technical user.
+ *
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void info(String message)
+ public void info(String message)
{
- if (isLoggable(Level.INFO))
- log(Level.INFO, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.INFO))
+ log(Level.INFO, message);
+ }
}
-
/**
- * Logs a message with severity level CONFIG. {@link Level#CONFIG} is
- * intended for static configuration messages, for example about the
- * windowing environment, the operating system version, etc.
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource bundle. While
- * it is possible to pass <code>null</code>, this is not
- * recommended, since a logging message without text is unlikely
- * to be helpful.
+ * Logs a message with severity level CONFIG. {@link Level#CONFIG} is intended
+ * for static configuration messages, for example about the windowing
+ * environment, the operating system version, etc.
+ *
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void config(String message)
+ public void config(String message)
{
- if (isLoggable(Level.CONFIG))
- log(Level.CONFIG, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.CONFIG))
+ log(Level.CONFIG, message);
+ }
}
-
/**
- * Logs a message with severity level FINE. {@link Level#FINE} is
- * intended for messages that are relevant for developers using
- * the component generating log messages. Examples include minor,
- * recoverable failures, or possible inefficiencies.
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource
- * bundle. While it is possible to pass
- * <code>null</code>, this is not recommended, since
- * a logging message without text is unlikely to be
- * helpful.
+ * Logs a message with severity level FINE. {@link Level#FINE} is intended for
+ * messages that are relevant for developers using the component generating
+ * log messages. Examples include minor, recoverable failures, or possible
+ * inefficiencies.
+ *
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void fine(String message)
+ public void fine(String message)
{
- if (isLoggable(Level.FINE))
- log(Level.FINE, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINE))
+ log(Level.FINE, message);
+ }
}
-
/**
- * Logs a message with severity level FINER. {@link Level#FINER} is
- * intended for rather detailed tracing, for example entering a
- * method, returning from a method, or throwing an exception.
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource
- * bundle. While it is possible to pass
- * <code>null</code>, this is not recommended, since
- * a logging message without text is unlikely to be
- * helpful.
+ * Logs a message with severity level FINER. {@link Level#FINER} is intended
+ * for rather detailed tracing, for example entering a method, returning from
+ * a method, or throwing an exception.
+ *
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void finer(String message)
+ public void finer(String message)
{
- if (isLoggable(Level.FINER))
- log(Level.FINER, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINER))
+ log(Level.FINER, message);
+ }
}
-
/**
- * Logs a message with severity level FINEST. {@link Level#FINEST}
- * is intended for highly detailed tracing, for example reaching a
- * certain point inside the body of a method.
- *
- * @param message the message text, also used as look-up key if the
- * logger is localizing messages with a resource
- * bundle. While it is possible to pass
- * <code>null</code>, this is not recommended, since
- * a logging message without text is unlikely to be
- * helpful.
+ * Logs a message with severity level FINEST. {@link Level#FINEST} is intended
+ * for highly detailed tracing, for example reaching a certain point inside
+ * the body of a method.
+ *
+ * @param message the message text, also used as look-up key if the logger is
+ * localizing messages with a resource bundle. While it is possible
+ * to pass <code>null</code>, this is not recommended, since a
+ * logging message without text is unlikely to be helpful.
*/
- public synchronized void finest(String message)
+ public void finest(String message)
{
- if (isLoggable(Level.FINEST))
- log(Level.FINEST, message);
+ synchronized (lock)
+ {
+ if (isLoggable(Level.FINEST))
+ log(Level.FINEST, message);
+ }
}
-
/**
- * Adds a handler to the set of handlers that get notified
- * when a log record is to be published.
- *
+ * Adds a handler to the set of handlers that get notified when a log record
+ * is to be published.
+ *
* @param handler the handler to be added.
- *
- * @throws NullPointerException if <code>handler</code>
- * is <code>null</code>.
- *
- * @throws SecurityException if this logger is not anonymous, a
- * security manager exists, and the caller is not granted
- * the permission to control the logging infrastructure by
- * having LoggingPermission("control"). Untrusted code can
- * obtain an anonymous logger through the static factory method
- * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
+ * @throws NullPointerException if <code>handler</code> is <code>null</code>.
+ * @throws SecurityException if this logger is not anonymous, a security
+ * manager exists, and the caller is not granted the permission to
+ * control the logging infrastructure by having
+ * LoggingPermission("control"). Untrusted code can obtain an
+ * anonymous logger through the static factory method
+ * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
- public synchronized void addHandler(Handler handler)
- throws SecurityException
+ public void addHandler(Handler handler) throws SecurityException
{
- if (handler == null)
- throw new NullPointerException();
-
- /* An application is allowed to control an anonymous logger
- * without having the permission to control the logging
- * infrastructure.
- */
- if (!anonymous)
- LogManager.getLogManager().checkAccess();
-
- if (!handlerList.contains(handler))
- {
- handlerList.add(handler);
- handlers = getHandlers();
- }
+ synchronized (lock)
+ {
+ if (handler == null)
+ throw new NullPointerException();
+
+ /*
+ * An application is allowed to control an anonymous logger without
+ * having the permission to control the logging infrastructure.
+ */
+ if (! anonymous)
+ LogManager.getLogManager().checkAccess();
+
+ if (! handlerList.contains(handler))
+ {
+ handlerList.add(handler);
+ handlers = getHandlers();
+ }
+ }
}
-
/**
- * Removes a handler from the set of handlers that get notified
- * when a log record is to be published.
- *
+ * Removes a handler from the set of handlers that get notified when a log
+ * record is to be published.
+ *
* @param handler the handler to be removed.
- *
- * @throws SecurityException if this logger is not anonymous, a
- * security manager exists, and the caller is not granted the
- * permission to control the logging infrastructure by having
- * LoggingPermission("control"). Untrusted code can obtain an
- * anonymous logger through the static factory method {@link
- * #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
- *
- * @throws NullPointerException if <code>handler</code>
- * is <code>null</code>.
+ * @throws SecurityException if this logger is not anonymous, a security
+ * manager exists, and the caller is not granted the permission to
+ * control the logging infrastructure by having
+ * LoggingPermission("control"). Untrusted code can obtain an
+ * anonymous logger through the static factory method {@link
+ * #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
+ * @throws NullPointerException if <code>handler</code> is <code>null</code>.
*/
- public synchronized void removeHandler(Handler handler)
- throws SecurityException
+ public void removeHandler(Handler handler) throws SecurityException
{
- /* An application is allowed to control an anonymous logger
- * without having the permission to control the logging
- * infrastructure.
- */
- if (!anonymous)
- LogManager.getLogManager().checkAccess();
-
- if (handler == null)
- throw new NullPointerException();
-
- handlerList.remove(handler);
- handlers = getHandlers();
+ synchronized (lock)
+ {
+ /*
+ * An application is allowed to control an anonymous logger without
+ * having the permission to control the logging infrastructure.
+ */
+ if (! anonymous)
+ LogManager.getLogManager().checkAccess();
+
+ if (handler == null)
+ throw new NullPointerException();
+
+ handlerList.remove(handler);
+ handlers = getHandlers();
+ }
}
-
/**
- * Returns the handlers currently registered for this Logger.
- * When a log record has been deemed as being loggable,
- * it will be passed to all registered handlers for
- * publication. In addition, if the logger uses parent handlers
- * (see {@link #getUseParentHandlers() getUseParentHandlers}
- * and {@link #setUseParentHandlers(boolean) setUseParentHandlers},
- * the log record will be passed to the parent's handlers.
+ * Returns the handlers currently registered for this Logger. When a log
+ * record has been deemed as being loggable, it will be passed to all
+ * registered handlers for publication. In addition, if the logger uses parent
+ * handlers (see {@link #getUseParentHandlers() getUseParentHandlers} and
+ * {@link #setUseParentHandlers(boolean) setUseParentHandlers}, the log
+ * record will be passed to the parent's handlers.
*/
- public synchronized Handler[] getHandlers()
+ public Handler[] getHandlers()
{
- /* We cannot return our internal handlers array
- * because we do not have any guarantee that the
- * caller would not change the array entries.
- */
- return (Handler[]) handlerList.toArray(new Handler[handlerList.size()]);
+ synchronized (lock)
+ {
+ /*
+ * We cannot return our internal handlers array because we do not have
+ * any guarantee that the caller would not change the array entries.
+ */
+ return (Handler[]) handlerList.toArray(new Handler[handlerList.size()]);
+ }
}
-
/**
- * Returns whether or not this Logger forwards log records to
- * handlers registered for its parent loggers.
- *
- * @return <code>false</code> if this Logger sends log records
- * merely to Handlers registered with itself;
- * <code>true</code> if this Logger sends log records
- * not only to Handlers registered with itself, but also
- * to those Handlers registered with parent loggers.
+ * Returns whether or not this Logger forwards log records to handlers
+ * registered for its parent loggers.
+ *
+ * @return <code>false</code> if this Logger sends log records merely to
+ * Handlers registered with itself; <code>true</code> if this Logger
+ * sends log records not only to Handlers registered with itself, but
+ * also to those Handlers registered with parent loggers.
*/
- public synchronized boolean getUseParentHandlers()
+ public boolean getUseParentHandlers()
{
- return useParentHandlers;
+ synchronized (lock)
+ {
+ return useParentHandlers;
+ }
}
-
/**
- * Sets whether or not this Logger forwards log records to
- * handlers registered for its parent loggers.
- *
- * @param useParentHandlers <code>false</code> to let this
- * Logger send log records merely to Handlers registered
- * with itself; <code>true</code> to let this Logger
- * send log records not only to Handlers registered
- * with itself, but also to those Handlers registered with
- * parent loggers.
- *
- * @throws SecurityException if this logger is not anonymous, a
- * security manager exists, and the caller is not granted
- * the permission to control the logging infrastructure by
- * having LoggingPermission("control"). Untrusted code can
- * obtain an anonymous logger through the static factory method
- * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
- *
+ * Sets whether or not this Logger forwards log records to handlers registered
+ * for its parent loggers.
+ *
+ * @param useParentHandlers <code>false</code> to let this Logger send log
+ * records merely to Handlers registered with itself;
+ * <code>true</code> to let this Logger send log records not only
+ * to Handlers registered with itself, but also to those Handlers
+ * registered with parent loggers.
+ * @throws SecurityException if this logger is not anonymous, a security
+ * manager exists, and the caller is not granted the permission to
+ * control the logging infrastructure by having
+ * LoggingPermission("control"). Untrusted code can obtain an
+ * anonymous logger through the static factory method
+ * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
- public synchronized void setUseParentHandlers(boolean useParentHandlers)
+ public void setUseParentHandlers(boolean useParentHandlers)
{
- /* An application is allowed to control an anonymous logger
- * without having the permission to control the logging
- * infrastructure.
- */
- if (!anonymous)
- LogManager.getLogManager().checkAccess();
-
- this.useParentHandlers = useParentHandlers;
+ synchronized (lock)
+ {
+ /*
+ * An application is allowed to control an anonymous logger without
+ * having the permission to control the logging infrastructure.
+ */
+ if (! anonymous)
+ LogManager.getLogManager().checkAccess();
+
+ this.useParentHandlers = useParentHandlers;
+ }
}
-
/**
- * Returns the parent of this logger. By default, the parent is
- * assigned by the LogManager by inspecting the logger's name.
- *
- * @return the parent of this logger (as detemined by the LogManager
- * by inspecting logger names), the root logger if no other
- * logger has a name which is a prefix of this logger's name, or
- * <code>null</code> for the root logger.
+ * Returns the parent of this logger. By default, the parent is assigned by
+ * the LogManager by inspecting the logger's name.
+ *
+ * @return the parent of this logger (as detemined by the LogManager by
+ * inspecting logger names), the root logger if no other logger has a
+ * name which is a prefix of this logger's name, or <code>null</code>
+ * for the root logger.
*/
- public synchronized Logger getParent()
+ public Logger getParent()
{
- return parent;
+ synchronized (lock)
+ {
+ return parent;
+ }
}
-
/**
- * Sets the parent of this logger. Usually, applications do not
- * call this method directly. Instead, the LogManager will ensure
- * that the tree of loggers reflects the hierarchical logger
- * namespace. Basically, this method should not be public at all,
- * but the GNU implementation follows the API specification.
- *
- * @throws NullPointerException if <code>parent</code> is
- * <code>null</code>.
- *
- * @throws SecurityException if this logger is not anonymous, a
- * security manager exists, and the caller is not granted
- * the permission to control the logging infrastructure by
- * having LoggingPermission("control"). Untrusted code can
- * obtain an anonymous logger through the static factory method
- * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
+ * Sets the parent of this logger. Usually, applications do not call this
+ * method directly. Instead, the LogManager will ensure that the tree of
+ * loggers reflects the hierarchical logger namespace. Basically, this method
+ * should not be public at all, but the GNU implementation follows the API
+ * specification.
+ *
+ * @throws NullPointerException if <code>parent</code> is <code>null</code>.
+ * @throws SecurityException if this logger is not anonymous, a security
+ * manager exists, and the caller is not granted the permission to
+ * control the logging infrastructure by having
+ * LoggingPermission("control"). Untrusted code can obtain an
+ * anonymous logger through the static factory method
+ * {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
- public synchronized void setParent(Logger parent)
+ public void setParent(Logger parent)
{
- if (parent == null)
- throw new NullPointerException();
+ synchronized (lock)
+ {
+ if (parent == null)
+ throw new NullPointerException();
- if (this == root)
- throw new IllegalArgumentException(
- "the root logger can only have a null parent");
+ if (this == root)
+ throw new IllegalArgumentException(
+ "the root logger can only have a null parent");
- /* An application is allowed to control an anonymous logger
- * without having the permission to control the logging
- * infrastructure.
- */
- if (!anonymous)
- LogManager.getLogManager().checkAccess();
+ /*
+ * An application is allowed to control an anonymous logger without
+ * having the permission to control the logging infrastructure.
+ */
+ if (! anonymous)
+ LogManager.getLogManager().checkAccess();
- this.parent = parent;
+ this.parent = parent;
+ }
}
-
+
/**
- * Gets the StackTraceElement of the first class that is not this class.
- * That should be the initial caller of a logging method.
+ * Gets the StackTraceElement of the first class that is not this class. That
+ * should be the initial caller of a logging method.
+ *
* @return caller of the initial logging method or null if unknown.
*/
private StackTraceElement getCallerStackFrame()
int index = 0;
// skip to stackentries until this class
- while(index < stackTrace.length
- && !stackTrace[index].getClassName().equals(getClass().getName()))
+ while (index < stackTrace.length
+ && ! stackTrace[index].getClassName().equals(getClass().getName()))
index++;
// skip the stackentries of this class
- while(index < stackTrace.length
- && stackTrace[index].getClassName().equals(getClass().getName()))
+ while (index < stackTrace.length
+ && stackTrace[index].getClassName().equals(getClass().getName()))
index++;
return index < stackTrace.length ? stackTrace[index] : null;
}
-
+
/**
* Reset and close handlers attached to this logger. This function is package
* private because it must only be available to the LogManager.
| (extra[pos+2] & 0xff) << 8
| (extra[pos+3] & 0xff) << 16
| (extra[pos+4] & 0xff) << 24);
- setTime(time);
+ setTime(time*1000);
}
}
pos += len;
*/
static final String TOGGLE_EXPAND = "toggle expand";
+ /**
+ * The name of an action which causes a component to perform its default
+ * action.
+ *
+ * @since 1.6
+ */
+ static final String CLICK = "click";
+
+ /**
+ * The name of an action which toggles the state of a popup, causing a
+ * hidden popup to be displayed and a visible popup to be hidden.
+ *
+ * @since 1.6
+ */
+ static final String TOGGLE_POPUP = "toggle popup";
+
/**
* Get the number possible actions for this object, with the zeroth
* representing the default action.
import javax.swing.text.AttributeSet;
/**
- * This is a convenience class that represents an accessible
- * attribute sequence.
+ * This is a convenience class that wraps together a sequence
+ * of text with the attributes applied to it. This allows a single
+ * object to be used when
+ * {@link AccessibleContext#ACCESSIBLE_TEXT_ATTRIBUTES_CHANGED}
+ * events are fired.
+ *
* @since 1.5
*/
public class AccessibleAttributeSequence
public int endIndex;
/**
- * Create a new instance.
+ * Creates a new instance using the specified attributes
+ * and the supplied start and end indicies.
+ *
+ * @param start the index of the start of the text.
+ * @param end the index of the end of the text.
+ * @param attr the attributes applied to the text sequence.
+ * @since 1.6
*/
- public AccessibleAttributeSequence()
+ public AccessibleAttributeSequence(int start, int end, AttributeSet attr)
{
+ startIndex = start;
+ endIndex = end;
+ attributes = attr;
}
+
}
* Select the text between two points.
*
* @param start the start position, inclusive
- * @param end the end position, exclusive
+ * @param stop the end position, exclusive
*/
// XXX What happens if indices are out of bounds?
void selectText(int start, int stop);
{
int i = relations.size();
while (--i >= 0)
- if (((AccessibleRelation) relations.get(i)).key.equals(key))
+ if ((relations.get(i)).key.equals(key))
return true;
return false;
}
int i = relations.size();
while (--i >= 0)
{
- AccessibleRelation r = (AccessibleRelation) relations.get(i);
+ AccessibleRelation r = relations.get(i);
if (r.key.equals(key))
return r;
}
public static final AccessibleRole RULER
= new AccessibleRole("ruler");
+ /**
+ * A HTML container is an accessible object which contains other
+ * accessible objects that together form some HTML content. For example,
+ * the content may be a sequence of text containing a link, which
+ * would be represent as two children, one an {@link AccessibleText}
+ * object holding the normal text and the other an
+ * {@link AccessibleHypertext} object representing the link.
+ *
+ * @since 1.6
+ */
+ public static final AccessibleRole HTML_CONTAINER
+ = new AccessibleRole("HTML container");
+
/**
* Create a new constant with a locale independent key. Follow the example,
* keep the constructor private and make public constants instead.
package javax.accessibility;
/**
- * This is a convenience class that encapsulates a String and a range.
+ * This is a convenience class that encapsulates a string of text
+ * and a range specifying where, within a larger body of text, the
+ * string may be found.
+ *
* @since 1.5
*/
public class AccessibleTextSequence
/**
* Create a new instance.
+ *
+ * @param start the initial index of the text within a larger
+ * body of text.
+ * @param end the final index of the text within a larger body
+ * of text.
+ * @param txt the text itself.
+ * @since 1.6
*/
- public AccessibleTextSequence()
+ public AccessibleTextSequence(int start, int end, String txt)
{
+ startIndex = start;
+ endIndex = end;
+ text = txt;
}
}
* IllegalStateException). If input is null then the current input
* source will be removed.
*
- * @param input the input source object
+ * @param in the input source object
* @param seekForwardOnly true if this reader should be allowed to
* read input from the data stream more than once, false otherwise
*
* null. IllegalArgumentException is thrown if either region will
* contain 0 pixels after clipping.
*
- * @param image read parameters, or null
+ * @param param read parameters, or null
* @param srcWidth the width of the source image
* @param srcHeight the height of the source image
* @param image the destination image, or null
public ImageTypeSpecifier getRawImageType (int imageIndex)
throws IOException
{
- return (ImageTypeSpecifier) getImageTypes(imageIndex).next();
+ return getImageTypes(imageIndex).next();
}
/**
* warning listeners will be notified of read progress, changes in
* sample sets and warnings respectively.
*
- * @param the index of the image frame to read
+ * @param imageIndex the index of the image frame to read
*
* @return a buffered image
*
* The source and destination band settings are checked with a call
* to checkReadParamBandSettings.
*
- * @param the index of the image frame to read
- * @param the image read parameters
+ * @param imageIndex the index of the image frame to read
+ * @param param the image read parameters
*
* @return an IIOImage
*
* Each set of source and destination band settings are checked with
* a call to checkReadParamBandSettings.
*
- * @param an iterator over the image read parameters
+ * @param params iterator over the image read parameters
*
* @return an IIOImage
*
* before this method returns and so listeners will not necessarily
* be notified.
*
- * @param the index of the image frame to read
- * @param the image read parameters
+ * @param imageIndex the index of the image frame to read
+ * @param param the image read parameters
*
* @return a rendered image
*
* @param colorSpace the color space
* @param bankIndices the bank indices at which each band will be
* stored
- * @param bandOffsets the starting band offset for each band within
+ * @param bankOffsets the starting band offset for each band within
* its bank
* @param dataType the data type, a DataBuffer constant
* @param hasAlpha true if this image type specifier should have an
* Create a buffered image with the given dimensions using that has
* the characteristics specified by this image type specifier.
*
- * @param the width of the buffered image, in pixels
- * @param the height of the buffered image, in pixels
+ * @param width width of the buffered image, in pixels
+ * @param height the height of the buffered image, in pixels
*
* @return a buffered image
*
* IllegalStateException). If input is null then the current input
* source will be removed.
*
- * @param input the output destination object
+ * @param output the output destination object
*
* @exception IllegalArgumentException if input is not a valid input
* source for this writer and is not an ImageInputStream
* @param imageIndex the frame index at which to insert the image
* @param image the image data, metadata and thumbnails to be
* inserted
- * @param the image write parameters, or null
+ * @param param image write parameters, or null
*
* @exception IllegalStateException if output is null
* @exception UnsupportedOperationException if image insertion is
package javax.imageio.metadata;
import org.w3c.dom.Attr;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.TypeInfo;
-import org.w3c.dom.UserDataHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
-import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
*/
public void setAttribute(String name, String value)
{
- Attr attr = (Attr) getAttributeNode(name);
+ Attr attr = getAttributeNode(name);
if (attr != null)
attr.setValue(value);
else
* @param category the service category to which an ordering
* constraint is to be added.
*
- * @param first the provider which is supposed to come before
+ * @param firstProvider the provider which is supposed to come before
* <code>second</code>.
*
- * @param second the provider which is supposed to come after
+ * @param secondProvider the provider which is supposed to come after
* <code>first</code>.
*
* @throws IllegalArgumentException if <code>first</code> and
* @param category the service category from which an ordering
* constraint is to be removed.
*
- * @param first the provider which is supposed to come before
+ * @param firstProvider the provider which is supposed to come before
* <code>second</code>.
*
- * @param second the provider which is supposed to come after
+ * @param secondProvider the provider which is supposed to come after
* <code>first</code>.
*
* @throws IllegalArgumentException if <code>first</code> and
* @param offset the index of the first element in <code>i</code>
* that will hold read data.
*
- * @param numLongs the number of signed 32-bit integers to read
+ * @param numInts the number of signed 32-bit integers to read
* (which is one fourth of the number of bytes).
*
* @throws IndexOutOfBoundsException if <code>offset</code> or
package javax.imageio.stream;
import java.io.BufferedInputStream;
-import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
/**
* @author Michael Koch (konqueror@gmx.de)
* or either <code>null</code> or <code>"-"</code> for a
* value which may be implied by any member, but not
* imply any member itself.
- * @param objectName the {@link ObjectName} to which this permission applies,
+ * @param name the {@link ObjectName} to which this permission applies,
* or <code>null</code> for a value which may be implied by
* any object name, but not imply any object name itself.
* @param actions the actions associated with this permission.
*/
public NotificationBroadcasterSupport()
{
- this(null, null);
+ this(null, (MBeanNotificationInfo[]) null);
}
/**
*/
public NotificationBroadcasterSupport(Executor executor)
{
- this(executor, null);
+ this(executor, (MBeanNotificationInfo) null);
}
/**
import java.io.Serializable;
-import java.util.Collections;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
Method getter;
try
{
- getter = iface.getMethod("get" + name, null);
+ getter = iface.getMethod("get" + name);
}
catch (NoSuchMethodException e)
{
try
{
- getter = iface.getMethod("is" + name, null);
+ getter = iface.getMethod("is" + name);
}
catch (NoSuchMethodException ex)
{
Object result;
try
{
- result = getter.invoke(impl, null);
+ result = getter.invoke(impl);
}
catch (IllegalAccessException e)
{
import java.lang.reflect.Array;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.management package.
+ Copyright (C) 2007 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. -->
+
+<html>
+<head><title>GNU Classpath - javax.management</title></head>
+
+<body>
+
+<p>
+Provides the core classes for the Java Management Extensions (JMX). This API
+builds on the notion of Java beans by providing a layer of abstraction between
+the beans themselves and the method of accessing them. Instead of being accessed
+directly, management beans or <strong>MBeans</strong> are usually accessed via
+a management server (an implementation of the @see MBeanServer interface). Thus,
+the bean itself may be a simple Java object or it may be something
+more complicated (for example, the server may map from Java to SNMP). The server may
+also retrieve the bean from some remote location rather than using a local object.
+</p>
+<p>
+Management beans are usually used for monitoring and/or configuration
+of a particular entity. For example, the platform management beans
+found in the @see java.lang.management package allow the user
+to obtain information about the operating system, current memory usage, etc.
+as well as turning on and off certain additional facilities. To this end,
+an MBean consists of:
+</p>
+<ul>
+<li><emph>attributes</emph> that may be read and/or written to.</li>
+<li><emph>operations</emph> which may be performed.</li>
+<li><emph>notifications</emph> that may emitted by the bean and listened for by users.</li>
+</ul>
+<p>
+The most common type of management bean is the @see StandardMBean, A standard MBean
+relies on the naming patterns established by the JavaBeans framework; the value of an
+attribute <code>name</code> is retrieved by an accessor method named <code>getName</code>
+and changed by a mutator method called <code>setName</code>. If the mutator is absent,
+the attribute is read only. Naming is also used to associate the implementation of a
+bean with its interface; an bean <code>Person</code> is assumed to be an implementation
+of the interface <code>PersonMBean</code> (and vice versa). To avoid these naming constraints,
+the @see StandardMBean class may be used.
+</p>
+<p>
+<h2>Types of Beans</h2>
+<p>
+The @see StandardMBean class is one example of a @see DynamicMBean where the attributes and
+operations of the bean are provided dynamically via the methods provided. With the
+@see StandardMBean class, this simply means that the class uses reflection to access the
+appropriate methods of the bean implementation. In a more complex scenario, the bean's
+data could be supplied from a file or over the network.
+</p>
+<p>
+Once we start talking about accessing beans over network and platform boundaries, we run
+in to the issue of how to deal with the types utilised by these beans. Simple types, such
+as numbers and strings, are usually fine but more complex types need special treatment.
+An <emph>Open MBean</emph> is one that only uses a specific set of types defined in the
+@see javax.management.openmbean package, allowing both sides of a remote connection to provide
+this subset of types and thus interact. An @see MXBean goes a stage further, and defines
+a method whereby a normal Java MBean may become an Open MBean by performing a defined mapping
+on the types of the bean. For example, a @see java.util.List or @see java.util.Set of a
+particular type becomes an array of the same type.
+</p>
+<h2>Accessing Beans</h2>
+<p>
+Although beans can be accessed like normal objects, the normal way of accessing them is
+via an @see MBeanServer. This provides the abstraction from the bean's implementation to
+a set of attributes, operations and notifications. The server identifies each bean via
+an @see ObjectName. This name is unique to a particular bean and is used to identify the
+bean when retrieving the value of an attribute or invoking an operation. Essentially, most
+methods provided by the server are the same as those provided by the @see DynamicMBean
+interface, except that each takes this additional @link ObjectName parameter to identify the
+bean being accessed.
+</p>
+<p>
+The @see MBeanServerFactory keeps track of the current MBean servers in use and allows new
+ones to be created. A special @see MBeanServer instance, called the <emph>platform MBean
+server</emph>, is created when the Java virtual machine is started and a reference to this
+may be obtained from the @see ManagementFactory using
+@see ManagementFactory#getPlatformMBeanServer(). This primarily exists for the purpose of
+creating and registering the platform MBeans, described in @see java.lang.management, which
+provide access to information about the underlying operating system, memory usage, the behaviour
+of the garbage collector, etc. but is equally suitable for creating and registering your own
+beans. Alternatively, a server instance may be obtained from the @see MBeanServerFactory.
+</p>
+<p>
+A bean obtains an @link ObjectName by registering with the server. This operation can be
+performed either by passing an existing instance to the @see MBeanServer#registerMBean method
+or by using the @see MBeanServer#createMBean method to simultaneously create the bean and
+register it with the server. During the registration process, the bean may perform some
+arbitrary behaviour if it implements the @link MBeanRegistration interface. The same is
+true when unregistering a bean.
+</p>
+<p>
+To actually access the attributes and operations of a bean via the server, we use code
+like the following:
+</p>
+<pre>
+// First we obtain the platform MBean server which has the platform MBeans registered
+MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+// We also need the object name of the memory bean so we can address it
+ObjectName name = new ObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
+// Next we obtain the value of the 'verbose' attribute
+// What actually happens here is that the server invokes the 'isVerbose' method of
+// the MemoryMXBean
+boolean verbose = server.getAttribute(name, "verbose");
+// We can also set the value of verbose. Again the server is actually performing
+// a setVerbose(val) on the bean but we don't need to know this.
+Attribute attrib = new Attribute("verbose", true);
+server.setAttribute(name, attrib);
+// We can also invoke the 'gc' operation which calls the garbage collector.
+server.invoke(name, "gc", new Object[]{}, new String[]{});
+</pre>
+<p>
+As noted above, the server is simply making basic method calls on the object using
+reflection. However, the server provides a layer of abstraction which means that something
+more complicated could actually be going on. The lines above are equally applicable, for
+example, if <code>server</code> is instead an @see MBeanServerConnection connecting us
+to a distant computer.
+</p>
+<p>
+This rather hideous code can be simplified back into simple method calls on an object,
+so that we get the best of both worlds. This is achieved using a <emph>MBean proxy</emph>:
+<pre>
+MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ObjectName name = new ObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
+MemoryMXBean bean = JMX.newMBeanProxy(server, name, MemoryMXBean.class);
+boolean verbose = bean.isVerbose();
+bean.setVerbose(true);
+bean.gc();
+</pre>
+<p>
+See how much simpler the operations are? The proxy handles the task of translating the method
+calls into appropriate invocations of methods on the server, simplifying the code for the user.
+</p>
+<p>
+Finally, we have assumed in the code above that the @see ObjectName of the bean is known.
+If this is not the case, then the server's database can be searched. The @see Query class
+provides appropriate operators (e.g. boolean (and,or), value comparison (>, <)) for
+building up relatively complex queries. Once constructed, a query may be passed to either
+the @see MBeanServer#queryNames or @see MBeanServer#queryMBeans to obtain an appropriate
+set of @see ObjectName or MBean instances.
+</p>
+<h2>Notifications</h2>
+<p>
+MBeans also have the capability to emit events. Beans which do so implement either the
+@see NotificationBroadcaster or @see NotificationEmitter interface (the difference between
+the two is simply the existence of a better removal method in the newer
+@see NotificationEmitter interface, which otherwise extends @see NotificationBroadcaster),
+usually by extending the @see NotificationBroadcasterSupport class. As is usual with event
+handling, other classes may <emph>signup</emph> to receive events via the
+@see NotificationListener interface. The signup process can include registering a filter
+(an implementation of @see NotificationFilter) so that only certain events reach the
+listener and others are discarded.
+</p>
+<h2>Remote Access</h2>
+<p>
+The subpackage @see javax.management.remote provides facilities to access remote MBean
+servers. This consists of a <emph>connector</emph> framework which abstracts the method
+of accessing remote servers from the actual implementation, so that the same method is
+used to connect to a remote server, regardless of how it is accessed.
+</p>
+</body>
+</html>
--- /dev/null
+/* NotificationResult.java -- Wrapper for a series of buffered notifications.
+ Copyright (C) 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. */
+
+package javax.management.remote;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * Wraps the result of a query for buffered notifications. In a remote
+ * scenario, it may be more practical for the server to buffer individual
+ * notifications from its beans and then return them in bulk on request.
+ * This class contains the notifications returned by such a request.
+ * </p>
+ * <p>
+ * It consists of a series of {@link Notification} and identifier pairs,
+ * wrapped in a {@link TargetedNotification} object. The identifiers
+ * serve to pair up the notification with the listener that requested
+ * it. Two positive numbers are also included: the first sequence number
+ * used by the returned notifications, and the sequence number of the
+ * notification which will be returned by the next query. The first
+ * sequence number may be greater than the next sequence number if some
+ * notifications have been lost.
+ * </p>
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.5
+ */
+public class NotificationResult
+ implements Serializable
+{
+
+ /**
+ * Compatible with JDK 1.6
+ */
+ private static final long serialVersionUID = 1191800228721395279L;
+
+ /**
+ * The sequence number of the first notification.
+ */
+ private long earliestSequenceNumber;
+
+ /**
+ * The sequence number of the next notification to be
+ * returned by a future query.
+ */
+ private long nextSequenceNumber;
+
+ /**
+ * The pairs of notifications and identifiers returned
+ * by the query.
+ */
+ private TargetedNotification[] targetedNotifications;
+
+ /**
+ * Constructs a new {@link NotificationResult} using the specified
+ * sequence numbers and the supplied array of notification pairs.
+ *
+ * @param startSeqNumber the sequence number of the first notification
+ * being returned.
+ * @param nextSeqNumber the sequence numbr of the next notification
+ * that will be returned from a future query.
+ * @param notifications the notification and identifier pairs. This
+ * may be empty.
+ * @throws IllegalArgumentException if a sequence number is negative
+ * or <code>notifications</code> is
+ * <code>null</code>.
+ */
+ public NotificationResult(long startSeqNumber, long nextSeqNumber,
+ TargetedNotification[] notifications)
+ {
+ if (startSeqNumber < 0)
+ throw new IllegalArgumentException("Starting sequence number is " +
+ "less than 0.");
+ if (nextSeqNumber < 0)
+ throw new IllegalArgumentException("Next sequence number is " +
+ "less than 0.");
+ if (notifications == null)
+ throw new IllegalArgumentException("The array of notifications is null.");
+ earliestSequenceNumber = startSeqNumber;
+ nextSequenceNumber = nextSeqNumber;
+ targetedNotifications = notifications;
+ }
+
+ /**
+ * Returns the sequence number of the earliest notification
+ * in the buffer.
+ *
+ * @return the sequence number of the earliest notification.
+ */
+ public long getEarliestSequenceNumber()
+ {
+ return earliestSequenceNumber;
+ }
+
+ /**
+ * Returns the sequence number of the next notification to
+ * be returned by a future query.
+ *
+ * @return the sequence number of the next notification.
+ */
+ public long getNextSequenceNumber()
+ {
+ return nextSequenceNumber;
+ }
+
+ /**
+ * Returns the notification and identifier pairs returned
+ * by the query.
+ *
+ * @return the notification and identifier pairs.
+ */
+ public TargetedNotification[] getTargetedNotifications()
+ {
+ return targetedNotifications;
+ }
+
+ /**
+ * Returns a textual representation of the object.
+ *
+ * @return a textual representation.
+ */
+ public String toString()
+ {
+ return getClass().getName() +
+ "[earliestSequenceNumber=" + earliestSequenceNumber +
+ ",nextSequenceNumber=" + nextSequenceNumber +
+ ",targetedNotifications=" + targetedNotifications +
+ "]";
+ }
+
+}
--- /dev/null
+/* TargetedNotificaton.java -- Wrapper for a notification and identifier pair.
+ Copyright (C) 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. */
+
+package javax.management.remote;
+
+import java.io.Serializable;
+
+import javax.management.Notification;
+
+/**
+ * Wraps a notification with an identifier that specifies
+ * the listener which received it.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.5
+ */
+public class TargetedNotification
+ implements Serializable
+{
+
+ /**
+ * Compatible with JDK 1.6
+ */
+ private static final long serialVersionUID = 7676132089779300926L;
+
+ /**
+ * The notification that was recieved by the listener.
+ */
+ private Notification notif;
+
+ /**
+ * The identifier for the listener that received the notification;
+ */
+ private Integer id;
+
+ /**
+ * Constructs a new {@link TargetedNotification} which connects
+ * the supplied notification with the specified identifier. The
+ * identifier matches one of those returned by a previous call
+ * to add a new notification listener.
+ *
+ * @param notif the notification.
+ * @param id the identifier of the listener that received the
+ * notification.
+ * @throws IllegalArgumentException if either argument is
+ * <code>null</code>.
+ */
+ public TargetedNotification(Notification notif, Integer id)
+ {
+ if (notif == null)
+ throw new IllegalArgumentException("The notification is null.");
+ if (id == null)
+ throw new IllegalArgumentException("The identifier is null.");
+ this.notif = notif;
+ this.id = id;
+ }
+
+ /**
+ * Returns the notification.
+ *
+ * @return the notification.
+ */
+ public Notification getNotification()
+ {
+ return notif;
+ }
+
+ /**
+ * Returns the identifier for the listener
+ * which received the notification.
+ *
+ * @return the identifier.
+ */
+ public Integer getListenerID()
+ {
+ return id;
+ }
+
+ /**
+ * Returns a textual representation of the object.
+ *
+ * @return a textual representation.
+ */
+ public String toString()
+ {
+ return getClass().getName() +
+ "[notif=" + notif +
+ ",id=" + id +
+ "]";
+ }
+
+}
+
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.management.remote package.
+ 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. -->
+
+<html>
+<head><title>GNU Classpath - javax.management.remote</title></head>
+
+<body>
+
+<p>
+Provides a framework for accessing remote MBean servers. The JMX
+remote API introduces the notion of a <emph>connector</emph>. On
+the server side, the connector wraps the MBean server, processing
+calls from remote clients. The client sends its requests via
+a connector which is responsible for transmitting the request
+to the server.
+</p>
+</body>
+</html>
--- /dev/null
+/* RMIConnection.java -- RMI object representing a MBean server connection.
+ Copyright (C) 2007, 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. */
+
+package javax.management.remote.rmi;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+import java.rmi.MarshalledObject;
+import java.rmi.Remote;
+
+import java.util.Set;
+
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
+import javax.management.IntrospectionException;
+import javax.management.InvalidAttributeValueException;
+import javax.management.ListenerNotFoundException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+
+import javax.management.remote.NotificationResult;
+
+import javax.security.auth.Subject;
+
+/**
+ * <p>
+ * RMI interface for forwarding requests to a remote
+ * {@link javax.management.MBeanServer}. This interface
+ * parallels the {@link javax.management.MBeanServerConnection}
+ * interface, providing a way of invoking those methods using
+ * the RMI protocol. When a client wishes to call a method
+ * of an MBean server using RMI, the method is called on the stub
+ * on the client side, which serializes the object parameters
+ * and sends them to the server where they are deserialized and
+ * an implementation of this interface forwards them to the
+ * appropriate MBean server. Return values follow the same
+ * process, only in reverse. Each client obtains its own
+ * implementation of this interface from an {@link RMIServer}
+ * instance.
+ * </p>
+ * <p>
+ * Implementations of this interface do more than simply
+ * forward requests directly to the server. The arguments
+ * of the server methods are wrapped in {@link MarshalledObject}
+ * instances, so that the correct classloader can be used to
+ * deserialize the arguments. When a method is called, the
+ * implementation must first retrieve the appropriate classloader
+ * and then use it to deserialize the marshalled object. Unless
+ * explicitly specified in the documentation for the method,
+ * a parameter of the type {@link MarshalledObject} or an array
+ * of that type should not be {@code null}.
+ * </p>
+ * <p>
+ * Security is also handled by this interface, as the methods
+ * use an additional {@link javax.security.auth.Subject} parameter
+ * for role delegation.
+ * </p>
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.5
+ */
+public interface RMIConnection
+ extends Closeable, Remote
+{
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#addNotificationListener(ObjectName,
+ * ObjectName, NotificationFilter, Object)} by
+ * registering the supplied listener with the specified management
+ * bean. Notifications emitted by the management bean are forwarded
+ * to the listener via the server, which will convert any MBean
+ * references in the source to portable {@link ObjectName}
+ * instances. The notification is otherwise unchanged. The filter
+ * and handback object are wrapped in a {@link MarshalledObject}
+ * so that they are deserialised using the bean's classloader.
+ *
+ * @param name the name of the management bean with which the listener
+ * should be registered.
+ * @param listener the listener which will handle notifications from
+ * the bean.
+ * @param filter a wrapper containing a filter to apply to incoming
+ * notifications, or <code>null</code> if no filtering
+ * should be applied.
+ * @param passback a wrapper containing an object to be passed to the
+ * listener when a notification is emitted.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @throws InstanceNotFoundException if the name of the management bean
+ * could not be resolved.
+ * @throws RuntimeOperationsException if the bean associated with the given
+ * object name is not a
+ * {@link NotificationListener}. This
+ * exception wraps an
+ * {@link IllegalArgumentException}.
+ * @throws SecurityException if the client or delegated subject (if any)
+ * does not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #removeNotificationListener(ObjectName, ObjectName,
+ * javax.security.auth.Subject)
+ * @see #removeNotificationListener(ObjectName, ObjectName,
+ * java.rmi.MarshalledObject,
+ * java.rmi.MarshalledObject,
+ * javax.security.auth.Subject)
+ * @see #removeNotificationListeners(ObjectName, Integer[],
+ * javax.security.auth.Subject)
+ * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
+ * NotificationFilter,
+ * Object)
+ */
+ void addNotificationListener(ObjectName name, ObjectName listener,
+ MarshalledObject filter, MarshalledObject passback,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#addNotificationListener(ObjectName,
+ * NotificationListener, NotificationFilter, Object)} by
+ * registering for notifications from the specified management
+ * beans. The array of filters is assumed to be aligned with
+ * the array of bean names, so that the notifications from each
+ * bean are matched against the appropriate filter (or left as
+ * is if the filter is {@code null}. Notifications emitted by
+ * the management beans are forwarded to a local listener created
+ * by this method, via the server, which converts any MBean
+ * references in the source to portable {@link ObjectName}
+ * instances. The notification is otherwise unchanged.
+ * </p>
+ * <p>
+ * This local listener buffers the notifications for retrieval by
+ * {@link #fetchNotifications(long,int,long). This method returns
+ * an array of listener identifiers which aligns with the supplied
+ * array of beans so that the appropriate listener can be identified
+ * by the client, which retains its own listener and handback object.
+ * The filters are wrapped in {@link MarshalledObject}s so that they are
+ * deserialised using the bean's classloader.
+ * </p>
+ *
+ * @param names the names of the management bean whose notifications
+ * should be recorded.
+ * @param filters an array of wrappers containing filters to apply to
+ * incoming notifications. An element may be <code>null</code>
+ * if no filtering should be applied to a bean's notifications.
+ * @param delegationSubjects an array of {@link javax.security.auth.Subject}
+ * instances containing the delegation principles for
+ * each listener. An element may be {@code null} if
+ * authentication is used instead, or the entire
+ * argument itself may be {@code null}. In the latter
+ * case, this is treated as an array of {@code null}
+ * values.
+ * @return an array of integers which act as listener identifiers, so that
+ * notifications retrieved from {@link #fetchNotifications(long,int,long)
+ * can be matched to the beans they were emitted from. The array is
+ * aligned against the array of beans supplied to this methods, so that
+ * the identifier in position 0 represents the bean in position 0 of the
+ * input array.
+ * @throws IllegalArgumentException if the {@code names} or {@code filters} array
+ * is {@code null}, the {@code names} array contains
+ * a {@code null} value or the three arrays are not
+ * of the same size.
+ * @throws ClassCastException if an element of the {@code filters} array unmarshalls
+ * as a non-null object that is not a {@link NotificationFilter}.
+ * @throws InstanceNotFoundException if the name of one of the management beans
+ * could not be resolved.
+ * @throws SecurityException if, for one of the beans, the client or delegated subject
+ * (if any) does not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #removeNotificationListener(ObjectName, ObjectName,
+ * javax.security.auth.Subject)
+ * @see #removeNotificationListener(ObjectName, ObjectName,
+ * java.rmi.MarshalledObject,
+ * java.rmi.MarshalledObject,
+ * javax.security.auth.Subject)
+ * @see #removeNotificationListeners(ObjectName, Integer[],
+ * javax.security.auth.Subject)
+ * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
+ * NotificationFilter,
+ * Object)
+ */
+ Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters,
+ Subject[] delegationSubjects)
+ throws InstanceNotFoundException, IOException;
+
+ /**
+ * Closes the connection and unexports the RMI object implementing this
+ * interface. Following this call, future method calls to this instance
+ * will fail.
+ *
+ * @throws IOException if there is an I/O error in transmitting the close
+ * request via RMI, closing the connection, or unexporting
+ * the RMI object.
+ */
+ void close()
+ throws IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#createMBean(String, ObjectName,
+ * Object[], String[])}. The array of parameters is wrapped in
+ * a {@link MarshalledObject} so that it is deserialised using the
+ * bean's classloader.
+ * </p>
+ * <p>
+ * Instantiates a new instance of the specified management bean
+ * using the given constructor and registers it with the server
+ * under the supplied name. The class is loaded using the
+ * {@link javax.management.loading.ClassLoaderRepository default
+ * loader repository} of the server.
+ * </p>
+ * <p>
+ * If the name supplied is <code>null</code>, then the bean is
+ * expected to implement the {@link MBeanRegistration} interface.
+ * The {@link MBeanRegistration#preRegister preRegister} method
+ * of this interface will be used to obtain the name in this case.
+ * </p>
+ *
+ * @param className the class of the management bean, of which
+ * an instance should be created.
+ * @param name the name to register the new bean with. This may
+ * be <code>null</code>.
+ * @param params the parameters for the bean's constructor, encapsulated
+ * in a {@link MarshalledObject}. If this parameter is
+ * <code>null</code>, it will be judged equivalent to an
+ * empty array.
+ * @param sig the signature of the constructor to use. If this parameter
+ * is <code>null</code>, it will be judged equivalent to an
+ * empty array.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return an {@link ObjectInstance} containing the {@link ObjectName}
+ * and Java class name of the created instance.
+ * @throws ReflectionException if an exception occurs in creating
+ * an instance of the bean.
+ * @throws InstanceAlreadyExistsException if a matching instance
+ * already exists.
+ * @throws MBeanRegistrationException if an exception occurs in
+ * calling the preRegister
+ * method.
+ * @throws MBeanException if the bean's constructor throws an exception.
+ * @throws NotCompliantMBeanException if the created bean is not
+ * compliant with the JMX specification.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> class name or object
+ * name or if the object name is a pattern.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ ObjectInstance createMBean(String className, ObjectName name,
+ MarshalledObject params, String[] sig,
+ Subject delegationSubject)
+ throws ReflectionException, InstanceAlreadyExistsException,
+ MBeanRegistrationException, MBeanException,
+ NotCompliantMBeanException, IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#createMBean(String, ObjectName,
+ * ObjectName, Object[], String[])}. The array of parameters is
+ * wrapped in a {@link MarshalledObject} so that it is deserialised
+ * using the bean's classloader.
+ * </p>
+ * <p>
+ * Instantiates a new instance of the specified management bean
+ * using the given constructor and registers it with the server
+ * under the supplied name. The class is loaded using the
+ * given class loader. If this argument is <code>null</code>,
+ * then the same class loader as was used to load the server
+ * is used.
+ * </p>
+ * <p>
+ * If the name supplied is <code>null</code>, then the bean is
+ * expected to implement the {@link MBeanRegistration} interface.
+ * The {@link MBeanRegistration#preRegister preRegister} method
+ * of this interface will be used to obtain the name in this case.
+ * </p>
+ *
+ * @param className the class of the management bean, of which
+ * an instance should be created.
+ * @param name the name to register the new bean with. This may
+ * be <code>null</code>.
+ * @param loaderName the name of the class loader.
+ * @param params the parameters for the bean's constructor, encapsulated
+ * in a {@link MarshalledObject}. If this parameter is
+ * <code>null</code>, it will be judged equivalent to an
+ * empty array.
+ * @param sig the signature of the constructor to use. If this parameter
+ * is <code>null</code>, it will be judged equivalent to an
+ * empty array.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return an {@link ObjectInstance} containing the {@link ObjectName}
+ * and Java class name of the created instance.
+ * @throws ReflectionException if an exception occurs in creating
+ * an instance of the bean.
+ * @throws InstanceAlreadyExistsException if a matching instance
+ * already exists.
+ * @throws MBeanRegistrationException if an exception occurs in
+ * calling the preRegister
+ * method.
+ * @throws MBeanException if the bean's constructor throws an exception.
+ * @throws NotCompliantMBeanException if the created bean is not
+ * compliant with the JMX specification.
+ * @throws InstanceNotFoundException if the specified class loader is not
+ * registered with the server.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> class name or object
+ * name or if the object name is a pattern.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ ObjectInstance createMBean(String className, ObjectName name,
+ ObjectName loaderName, MarshalledObject params,
+ String[] sig, Subject delegationSubject)
+ throws ReflectionException, InstanceAlreadyExistsException,
+ MBeanRegistrationException, MBeanException,
+ NotCompliantMBeanException, InstanceNotFoundException,
+ IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#createMBean(String, ObjectName,
+ * ObjectName)} by instantiating a new instance of the specified
+ * management bean using the default constructor and registering
+ * it with the server under the supplied name. The class is loaded
+ * using the given class loader. If this argument is <code>null</code>,
+ * then the same class loader as was used to load the server
+ * is used.
+ * </p>
+ * <p>
+ * If the name supplied is <code>null</code>, then the bean is
+ * expected to implement the {@link MBeanRegistration} interface.
+ * The {@link MBeanRegistration#preRegister preRegister} method
+ * of this interface will be used to obtain the name in this case.
+ * </p>
+ * <p>
+ * This method is equivalent to calling {@link
+ * #createMBean(String, ObjectName, ObjectName, Object[], String)
+ * <code>createMBean(className, name, loaderName, (Object[]) null,
+ * (String) null)</code>} with <code>null</code> parameters
+ * and signature.
+ * </p>
+ *
+ * @param className the class of the management bean, of which
+ * an instance should be created.
+ * @param name the name to register the new bean with. This may
+ * be <code>null</code>.
+ * @param loaderName the name of the class loader.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return an {@link ObjectInstance} containing the {@link ObjectName}
+ * and Java class name of the created instance.
+ * @throws ReflectionException if an exception occurs in creating
+ * an instance of the bean.
+ * @throws InstanceAlreadyExistsException if a matching instance
+ * already exists.
+ * @throws MBeanRegistrationException if an exception occurs in
+ * calling the preRegister
+ * method.
+ * @throws MBeanException if the bean's constructor throws an exception.
+ * @throws NotCompliantMBeanException if the created bean is not
+ * compliant with the JMX specification.
+ * @throws InstanceNotFoundException if the specified class loader is not
+ * registered with the server.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> class name or object
+ * name or if the object name is a pattern.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #createMBean(String, ObjectName, ObjectName, MarshalledObject,
+ * String[], Subject)
+ */
+ ObjectInstance createMBean(String className, ObjectName name,
+ ObjectName loaderName, Subject delegationSubject)
+ throws ReflectionException, InstanceAlreadyExistsException,
+ MBeanRegistrationException, MBeanException,
+ NotCompliantMBeanException, InstanceNotFoundException,
+ IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#createMBean(String, ObjectName)} by
+ * instantiating a new instance of the specified management bean
+ * using the default constructor and registering it with the server
+ * under the supplied name. The class is loaded using the
+ * {@link javax.management.loading.ClassLoaderRepository default
+ * loader repository} of the server.
+ * </p>
+ * <p>
+ * If the name supplied is <code>null</code>, then the bean is
+ * expected to implement the {@link MBeanRegistration} interface.
+ * The {@link MBeanRegistration#preRegister preRegister} method
+ * of this interface will be used to obtain the name in this case.
+ * </p>
+ * <p>
+ * This method is equivalent to calling {@link
+ * #createMBean(String, ObjectName, Object[], String[])
+ * <code>createMBean(className, name, (Object[]) null,
+ * (String[]) null)</code>} with <code>null</code> parameters
+ * and signature.
+ * </p>
+ *
+ * @param className the class of the management bean, of which
+ * an instance should be created.
+ * @param name the name to register the new bean with. This may
+ * be <code>null</code>.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return an {@link ObjectInstance} containing the {@link ObjectName}
+ * and Java class name of the created instance.
+ * @throws ReflectionException if an exception occurs in creating
+ * an instance of the bean.
+ * @throws InstanceAlreadyExistsException if a matching instance
+ * already exists.
+ * @throws MBeanRegistrationException if an exception occurs in
+ * calling the preRegister
+ * method.
+ * @throws MBeanException if the bean's constructor throws an exception.
+ * @throws NotCompliantMBeanException if the created bean is not
+ * compliant with the JMX specification.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> class name or object
+ * name or if the object name is a pattern.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #createMBean(String, ObjectName, MarshalledObject, String[], Subject)
+ */
+ ObjectInstance createMBean(String className, ObjectName name,
+ Subject delegationSubject)
+ throws ReflectionException, InstanceAlreadyExistsException,
+ MBeanRegistrationException, MBeanException,
+ NotCompliantMBeanException, IOException;
+
+ /**
+ * <p>
+ * Retrieves any waiting notifications from the server. When notifications
+ * are requested using the {@link #addNotificationListeners(ObjectName[],
+ * MarshalledObject[], Subject[])} method, the server sets up an internal
+ * listener to receive notifications from the bean and buffer them. When
+ * this method is called, these buffered notifications can be retrieved.
+ * </p>
+ * <p>
+ * The blocking behaviour of this method depends on the timeout value specified.
+ * If there are no waiting notifications in the buffer, a value of 0 will cause
+ * the method to return immediately. Conversely, if the value is
+ * {@link Long#MAX_VALUE}, then it will wait indefinitely until a notification
+ * arrives. For any other value, it waits until a notification arrives or the
+ * number of milliseconds specified by the timeout value is exceeded. The
+ * behaviour for a negative timeout value is undefined.
+ * </p>
+ * <p>
+ * For a notification to be returned, the following criteria must be fulfilled:
+ * </p>
+ * <ul>
+ * <li>the client must have previously requested notifications from at least
+ * one bean</li>
+ * <li>a bean from which notifications have been requested must have emitted
+ * a notification since the last call to this method</li>
+ * <li>the emitted notification must pass through any filters established
+ * when notifications were requested</li>
+ * <li>the sequence number of the notification must be greater than or equal
+ * to the specified sequence number (if non-negative)</li>
+ * </ul>
+ *
+ * @param sequenceNumber the sequence number of each notification returned
+ * must be greater than or equal to this value. If
+ * the number is negative, this is interpreted as
+ * meaning the sequence number of the next notification
+ * and so all notifications are allowed through.
+ * @param maxNotifications the maximum number of notifications to return.
+ * This does not include any duplicates so the
+ * number of actual notifications returned may
+ * be larger.
+ * @param timeout the number of milliseconds to wait for a notification
+ * if the buffer is empty. <code>0</code> causes the
+ * method to return immediately even if there are no
+ * notifications available (non-blocking behaviour) while
+ * a value of {@link Long#MAX_VALUE} causes it to wait
+ * indefinitely (blocking behaviour). The response to
+ * a negative value is undefined.
+ * @return a {@link NotificationResult} object containing the buffered
+ * notifications.
+ * @throws IOException if an I/O error occurs.
+ */
+ NotificationResult fetchNotifications(long sequenceNumber,
+ int maxNotifications,
+ long timeout)
+ throws IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getAttribute(ObjectName, String)},
+ * returning the value of the supplied attribute from the specified
+ * management bean.
+ *
+ * @param bean the bean to retrieve the value from.
+ * @param name the name of the attribute to retrieve.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the value of the attribute.
+ * @throws AttributeNotFoundException if the attribute could not be
+ * accessed from the bean.
+ * @throws MBeanException if the management bean's accessor throws
+ * an exception.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws ReflectionException if an exception was thrown in trying
+ * to invoke the bean's accessor.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> bean or attribute
+ * name.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see DynamicMBean#getAttribute(String)
+ */
+ Object getAttribute(ObjectName bean, String name, Subject delegationSubject)
+ throws MBeanException, AttributeNotFoundException,
+ InstanceNotFoundException, ReflectionException,
+ IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getAttribute(ObjectName, String)},
+ * returning the values of the named attributes from the specified
+ * management bean.
+ *
+ * @param bean the bean to retrieve the value from.
+ * @param names the names of the attributes to retrieve.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the values of the attributes.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws ReflectionException if an exception was thrown in trying
+ * to invoke the bean's accessor.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> bean or attribute
+ * name.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see DynamicMBean#getAttributes(String[])
+ */
+ AttributeList getAttributes(ObjectName bean, String[] names,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, ReflectionException,
+ IOException;
+
+ /**
+ * Returns the unique identifier for this connection to the RMI
+ * server.
+ *
+ * @return the connection ID.
+ * @throws IOException if an I/O error occurred.
+ */
+ String getConnectionId()
+ throws IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getDefaultDomain()} by returning the default
+ * domain this server applies to beans that have no specified domain.
+ *
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the default domain.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ String getDefaultDomain(Subject delegationSubject)
+ throws IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getDomains()} by returning an array
+ * containing all the domains used by beans registered with
+ * this server. The ordering of the array is undefined.
+ *
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the list of domains.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see ObjectName#getDomain()
+ */
+ String[] getDomains(Subject delegationSubject)
+ throws IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getMBeanCount()} by returning the number of
+ * management beans registered with this server.
+ *
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the number of registered beans.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ Integer getMBeanCount(Subject delegationSubject)
+ throws IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getMBeanInfo(ObjectName)} by returning
+ * information on the given management bean.
+ *
+ * @param name the name of the management bean.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return an instance of {@link MBeanInfo} for the bean.
+ * @throws IntrospectionException if an exception occurs in examining
+ * the bean.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws ReflectionException if an exception occurs when trying
+ * to invoke {@link DynamicMBean#getMBeanInfo()}
+ * on the bean.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see DynamicMBean#getMBeanInfo()
+ */
+ MBeanInfo getMBeanInfo(ObjectName name, Subject delegationSubject)
+ throws InstanceNotFoundException, IntrospectionException,
+ ReflectionException, IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#getObjectInstance(ObjectName)} by returning
+ * the {@link ObjectInstance} created for the specified management
+ * bean on registration.
+ *
+ * @param name the name of the bean.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the corresponding {@link ObjectInstance} instance.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #createMBean(String, ObjectName, Subject)
+ */
+ ObjectInstance getObjectInstance(ObjectName name, Subject delegationSubject)
+ throws InstanceNotFoundException, IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#invoke(ObjectName, String, Object[],
+ * String[])}. The array of parameters is wrapped in a
+ * {@link MarshalledObject} so that it is deserialised
+ * using the bean's classloader.
+ * </p>
+ * <p>
+ * Invokes the supplied operation on the specified management
+ * bean. The class objects specified in the signature are loaded
+ * using the same class loader as was used for the management bean.
+ *
+ * @param bean the management bean whose operation should be invoked.
+ * @param name the name of the operation to invoke.
+ * @param params the parameters for the bean's constructor, encapsulated
+ * in a {@link MarshalledObject}. If this parameter is
+ * <code>null</code>, it will be judged equivalent to an
+ * empty array.
+ * @param sig the signature of the constructor to use. If this parameter
+ * is <code>null</code>, it will be judged equivalent to an
+ * empty array. The class objects will be loaded using the
+ * bean's classloader.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return the return value of the method.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws MBeanException if the method invoked throws an exception.
+ * @throws ReflectionException if an exception is thrown in invoking the
+ * method.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see DynamicMBean#invoke(String, Object[], String[])
+ */
+ Object invoke(ObjectName bean, String name, MarshalledObject params,
+ String[] sig, Subject delegationSubject)
+ throws InstanceNotFoundException, MBeanException,
+ ReflectionException, IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#isInstanceOf(ObjectName, String) by
+ * returning true if the specified management bean is an instance
+ * of the supplied class.
+ * </p>
+ * <p>
+ * A bean, B, is an instance of a class, C, if either of the following
+ * conditions holds:
+ * </p>
+ * <ul>
+ * <li>The class name in B's {@link MBeanInfo} is equal to the supplied
+ * name.</li>
+ * <li>Both the class of B and C were loaded by the same class loader,
+ * and B is assignable to C.</li>
+ * </ul>
+ *
+ * @param name the name of the management bean.
+ * @param className the name of the class to test if <code>name</code> is
+ * an instance of.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return true if either B is directly an instance of the named class,
+ * or B is assignable to the class, given that both it and B's
+ * current class were loaded using the same class loader.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ boolean isInstanceOf(ObjectName name, String className,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#isRegistered(ObjectName) by returning
+ * true if the specified management bean is registered with
+ * the server.
+ *
+ * @param name the name of the management bean.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return true if the bean is registered.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> bean name.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ boolean isRegistered(ObjectName name, Subject delegationSubject)
+ throws IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#queryMBeans(ObjectName, QueryExp)}.
+ * The query expression is wrapped in a {@link MarshalledObject}
+ * so that it is deserialised using the bean's classloader.
+ * </p>
+ * <p>
+ * Returns a set of {@link ObjectInstance}s matching the specified
+ * criteria. The full set of beans registered with the server
+ * are passed through two filters:
+ * </p>
+ * <ol>
+ * <li>Pattern matching is performed using the supplied
+ * {@link ObjectName}.</li>
+ * <li>The supplied query expression is applied.</li>
+ * </ol>
+ * <p>
+ * If both the object name and the query expression are <code>null</code>,
+ * or the object name has no domain and no key properties,
+ * no filtering will be performed and all beans are returned.
+ * </p>
+ *
+ * @param name an {@link ObjectName} to use as a filter.
+ * @param query a query expression to apply to each of the beans that match
+ * the given object name, encapsulated in a
+ * {@link MarshalledObject}. If a <code>null</code> value is
+ * encapsulated, then the beans will only be filtered using
+ * pattern matching on the supplied {@link ObjectName}.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return a set of {@link ObjectInstance}s matching the filtered beans.
+ * This is empty if no beans survived the filters.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ */
+ Set<ObjectInstance> queryMBeans(ObjectName name, MarshalledObject query,
+ Subject delegationSubject)
+ throws IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#queryNames(ObjectName, QueryExp)}.
+ * The query expression is wrapped in a {@link MarshalledObject}
+ * so that it is deserialised using the bean's classloader.
+ * </p>
+ * <p>
+ * Returns a set of {@link ObjectName}s matching the specified
+ * criteria. The full set of beans registered with the server
+ * are passed through two filters:
+ * </p>
+ * <ol>
+ * <li>Pattern matching is performed using the supplied
+ * {@link ObjectName}.</li>
+ * <li>The supplied query expression is applied.</li>
+ * </ol>
+ * <p>
+ * If both the object name and the query expression are <code>null</code>,
+ * or the object name has no domain and no key properties,
+ * no filtering will be performed and all beans are returned.
+ * </p>
+ *
+ * @param name an {@link ObjectName} to use as a filter.
+ * @param query a query expression to apply to each of the beans that match
+ * the given object name, encapsulated in a
+ * {@link MarshalledObject}. If a <code>null</code> value is
+ * encapsulated, then the beans will only be filtered using
+ * pattern matching on the supplied {@link ObjectName}.
+ * @param delegationSubject an instance of {@link javax.security.auth.Subject}
+ * containing the delegation principles. This may be
+ * {@code null} is authentication is used instead.
+ * @return a set of {@link ObjectName}s matching the filtered beans.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ Set<ObjectName> queryNames(ObjectName name, MarshalledObject query,
+ Subject delegationSubject)
+ throws IOException;
+
+ /**
+ * <p>
+ * Handles {@link
+ * MBeanServerConnection#removeNotificationListener(ObjectName,
+ * ObjectName, NotificationFilter, Object)}. Both the filter and
+ * the handback object are wrapped in a {@link MarshalledObject}
+ * so that they are deserialised using the bean's classloader.
+ * </p>
+ * <p>
+ * Removes the specified listener from the list of recipients
+ * of notifications from the supplied bean. Only the first instance with
+ * the supplied filter and passback object is removed.
+ * <code>null</code> is used as a valid value for these parameters,
+ * rather than as a way to remove all registration instances for
+ * the specified listener; for this behaviour instead, see
+ * {@link #removeNotificationListener(ObjectName, NotificationListener)}.
+ * </p>
+ *
+ * @param name the name of the management bean from which the
+ * listener should be removed.
+ * @param listener the listener to remove.
+ * @param filter a wrapper containing the filter of the listener
+ * to remove.
+ * @param passback a wrapper containing the handback object of the
+ * listener to remove.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws ListenerNotFoundException if the specified listener
+ * is not registered with the bean.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #addNotificationListener(ObjectName, NotificationListener,
+ * MarshalledObject, MarshalledObject, Subject)
+ * @see NotificationEmitter#removeNotificationListener(NotificationListener,
+ * NotificationFilter,
+ * Object)
+ */
+ void removeNotificationListener(ObjectName name,
+ ObjectName listener,
+ MarshalledObject filter,
+ MarshalledObject passback,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, ListenerNotFoundException,
+ IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#removeNotificationListener(ObjectName,
+ * ObjectName)} by removing the specified listener from the list
+ * of recipients of notifications from the supplied bean. This
+ * includes all combinations of filters and passback objects
+ * registered for this listener. For more specific removal of
+ * listeners, see {@link #removeNotificationListener(ObjectName,
+ * ObjectName,MarshalledObject,MarshalledObject,Subject)}
+ *
+ * @param name the name of the management bean from which the
+ * listener should be removed.
+ * @param listener the name of the listener to remove.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @throws InstanceNotFoundException if a name doesn't match a registered
+ * bean.
+ * @throws ListenerNotFoundException if the specified listener
+ * is not registered with the bean.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #addNotificationListener(ObjectName, NotificationListener,
+ * MarshalledObject, MarshalledObject, Subject)
+ * @see NotificationBroadcaster#removeNotificationListener(NotificationListener)
+ */
+ void removeNotificationListener(ObjectName name, ObjectName listener,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, ListenerNotFoundException,
+ IOException;
+
+ /**
+ * Removes one or more {@link NotificationListener}s from the specified
+ * management bean. This method corresponds to
+ * {@link #addNotificationListeners(ObjectName[], MarshalledObject[],
+ * Subject)} and provides a different way of handling
+ * MBeanServerConnection#removeNotificationListener(ObjectName,
+ * ObjectName)} and
+ * {@link MBeanServerConnection#removeNotificationListener(ObjectName,
+ * ObjectName, NotificationFilter, Object)} by using the integer
+ * identifiers provided by the
+ * {@link #addNotificationListeners(ObjectName[], MarshalledObject[],
+ * Subject)} method to select the listeners to remove.
+ *
+ * @param name the name of the management bean from which the
+ * listeners should be removed.
+ * @param listenerIds the identifiers of the listeners to remove.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @throws InstanceNotFoundException if a name doesn't match a registered
+ * bean.
+ * @throws ListenerNotFoundException if the specified listener
+ * is not registered with the bean.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @throws IllegalArgumentException if either <code>name</code>,
+ * <code>listenerIds</code> or an element
+ * of <code>listenerIds</code>
+ * is <code>null</code>.
+ * @see #addNotificationListeners(ObjectName[], MarshalledObject[], Subject)
+ */
+ void removeNotificationListeners(ObjectName name, Integer[] listenerIds,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, ListenerNotFoundException,
+ IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#setAttribute(ObjectName, Attribute)}
+ * by setting the value of the specified attribute of the supplied
+ * management bean. The attribute is wrapped in a
+ * {@link MarshalledObject} so that it is deserialised using the
+ * bean's classloader.
+ *
+ * @param name the name of the management bean.
+ * @param attribute the attribute to set, encapsulated in a
+ * {@link MarshalledObject}.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws AttributeNotFoundException if the attribute does not
+ * correspond to an attribute
+ * of the bean.
+ * @throws InvalidAttributeValueException if the value is invalid
+ * for this particular
+ * attribute of the bean.
+ * @throws MBeanException if setting the attribute causes
+ * the bean to throw an exception (which
+ * becomes the cause of this exception).
+ * @throws ReflectionException if an exception occurred in trying
+ * to use the reflection interface
+ * to lookup the attribute. The
+ * thrown exception is the cause of
+ * this exception.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> bean or attribute
+ * name.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #getAttribute(ObjectName, String, Subject)
+ * @see javax.management.DynamicMBean#setAttribute(Attribute)
+ */
+ void setAttribute(ObjectName name, MarshalledObject attribute,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, AttributeNotFoundException,
+ InvalidAttributeValueException, MBeanException,
+ ReflectionException, IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#setAttributes(ObjectName, AttributeList)}
+ * by setting the value of each of the specified attributes
+ * of the supplied management bean to that specified by
+ * the {@link Attribute} object. The returned list contains
+ * the attributes that were set and their new values.
+ * The attribute list is wrapped in a {@link MarshalledObject} so
+ * that it is deserialised using the bean's classloader.
+ *
+ * @param name the name of the management bean.
+ * @param attributes the attributes to set, encapsulated in a
+ * {@link MarshalledObject}.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @return a list of the changed attributes.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws ReflectionException if an exception occurred in trying
+ * to use the reflection interface
+ * to lookup the attribute. The
+ * thrown exception is the cause of
+ * this exception.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> bean or attribute
+ * list.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ * @see #getAttributes(ObjectName, String[])
+ * @see DynamicMBean#setAttributes(AttributeList)
+ */
+ AttributeList setAttributes(ObjectName name, MarshalledObject attributes,
+ Subject delegationSubject)
+ throws InstanceNotFoundException, ReflectionException,
+ IOException;
+
+ /**
+ * Handles {@link
+ * MBeanServerConnection#unregisterMBean(ObjectName)} by unregistering
+ * the specified management bean. Following this operation,
+ * the bean instance is no longer accessible from the server via this
+ * name. Prior to unregistering the bean, the
+ * {@link MBeanRegistration#preDeregister()} method will be called if
+ * the bean implements the {@link MBeanRegistration} interface.
+ *
+ * @param name the name of the management bean.
+ * @param delegationSubject a {@link javax.security.auth.Subject} instance
+ * containing the delegation principles or
+ * {@code null} if authentication is used.
+ * @throws InstanceNotFoundException if the bean can not be found.
+ * @throws MBeanRegistrationException if an exception occurs in
+ * calling the preDeregister
+ * method.
+ * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
+ * is thrown by the server due to a
+ * <code>null</code> bean name or a
+ * request being made to unregister the
+ * {@link MBeanServerDelegate} bean.
+ * @throws SecurityException if the client or delegated subject (if any) does
+ * not have permission to invoke this operation.
+ * @throws IOException if an I/O error occurred in communicating with
+ * the bean server.
+ */
+ void unregisterMBean(ObjectName name, Subject delegationSubject)
+ throws InstanceNotFoundException, MBeanRegistrationException,
+ IOException;
+
+}
--- /dev/null
+/* RMIServer.java -- RMI object for connecting to an RMI JMX connector.
+ Copyright (C) 2007 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 javax.management.remote.rmi;
+
+import java.io.IOException;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+/**
+ * RMI interface for obtaining an instance of an
+ * {@link RMIConnection}. An implementation of this
+ * interface exists for each RMI connector.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.5
+ */
+public interface RMIServer
+ extends Remote
+{
+
+ /**
+ * Returns the version of the RMI connection protocol used
+ * by this server. The returned string takes the form of
+ * <emph>protocol-version implementation-name</emph> where
+ * <emph>protocol-version</emph> is a series of two or more
+ * non-negative integers, separated by a decimal point (.)
+ * (currently {@code 1.0}) and <emph>implementation-name</emph>
+ * is the string {@code "GNU Classpath"} followed by the version
+ * of GNU Classpath in use.
+ *
+ * @return the string specified above.
+ * @throws RemoteException if there is a problem with the transfer
+ * of the string via RMI.
+ */
+ String getVersion()
+ throws RemoteException;
+
+ /**
+ * Constructs and returns a new RMI connection using the specified
+ * authentication credentials. Each client calls this method to
+ * obtain a connection to the server.
+ *
+ * @param credentials a user-defined object passed to the server
+ * to authenticate the client. May be {@code null}.
+ * @return the new connection.
+ * @throws IOException if the new connection can not be created or
+ * exported, or an error occurs in the RMI transmission.
+ * @throws SecurityException if the client could not be authenticated
+ * correctly using the supplied credientials.
+ */
+ RMIConnection newClient(Object credentials)
+ throws IOException;
+}
package javax.net.ssl;
-import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.Principal;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Iterator;
-
import javax.print.attribute.Attribute;
import javax.print.attribute.PrintJobAttribute;
for (int i = 0; i < mediaCache.size(); i++)
{
- MediaSize size = (MediaSize) mediaCache.get(i);
+ MediaSize size = mediaCache.get(i);
int dist = (Math.abs(size.getXMicrometers() - xMicro)
+ Math.abs(size.getYMicrometers() - yMicro));
{
for (int i = 0; i < mediaCache.size(); i++)
{
- MediaSize size = (MediaSize) mediaCache.get(i);
+ MediaSize size = mediaCache.get(i);
if (size.getMediaSizeName().equals(media))
return size;
if (severity == null)
throw new NullPointerException("severity is null");
- return super.put((PrinterStateReason) reason, (Severity) severity);
+ return super.put(reason, severity);
}
/**
* unexported. Also, such object cannot be collected by garbage collector.
* This is usually impemented via {@link Util#unexportObject}
*
- * @param object the object to export.
+ * @param obj the object to export.
*
* @throws RemoteException
*/
* returned stub is also connected to the same ORB. If the target is
* unconnected, the returned stub is unconnected.
*
- * @param target a server side object.
+ * @param obj a server side object.
* @return a stub object that can be used to access that server object.
*
* @throws NoSuchObjectException if a stub cannot be located for the given
* object to becomes available for garbage collection. This is usually
* impemented via {@link Util#unexportObject}
*
- * @param object the object to unexport.
+ * @param obj the object to unexport.
*
* @throws NoSuchObjectException if the passed object is not currently
* exported.
* </tr>
* </table>
*
- * @param ex an exception that was thrown on a server side implementation.
+ * @param exception an exception that was thrown on a server side implementation.
*
* @return the corresponding RemoteException unless it is a RuntimeException.
*
* </tr>
* </table>
*
- * @param ex an exception that was thrown on a server side implementation.
+ * @param e an exception that was thrown on a server side implementation.
*
* @return the corresponding RemoteException unless it is a RuntimeException.
*
*
* @param output a stream to write to, must be
* org.omg.CORBA_2_3.portable.OutputStream
- * @param object an object to write.
+ * @param obj an object to write.
*/
void writeRemoteObject(OutputStream output, Object obj);
* When the value provides the writeReplace method, the result of this method
* is written. Otherwise, the value itself is written.
*
- * @param the value that should be written to the stream.
+ * @param value the value that should be written to the stream.
*
* @return the value that will be actually written to the stream.
*/
* <code>a_source</code> parameter. The a_target is connected to the same
* ORB (and, if applicable, to the same {@link POA}) as the a_source.
*
- * @param a_target the target to connect to ORB, must be an instance of either
+ * @param target the target to connect to ORB, must be an instance of either
* {@link ObjectImpl} (Stubs and old-style ties) or {@link Tie}.
*
- * @param a_source the object, providing the connection information, must be
+ * @param source the object, providing the connection information, must be
* an instance of either {@link ObjectImpl} (Stubs and old-style ties) or
* {@link Servant} (the next-generation Ties supporting {@link POA}).
*
* SslRMIClientSocketFactory
*
* This class implements an RMIClientSocketFactory for SSL sockets.
- * it uses the defeult SSLClientSocketFactory.
+ * it uses the default SSLClientSocketFactory.
*
* This class can optionally use the following system properties, if set:
* <code>javax.rmi.ssl.client.enabledCipherSuites</code>
private String[] getProp(String p)
{
- StringTokenizer st;
+ String o;
try
{
- String o = (String)System.getProperty( p );
- st = new StringTokenizer( o, "," );
+ o = System.getProperty(p);
}
catch(SecurityException se)
{
return null;
}
+ if (o == null)
+ return null;
+ StringTokenizer st = new StringTokenizer( o, "," );
int n = st.countTokens();
if( n < 1 )
return null;
{
// If we're adding in the initialization stage use super.add.
// Otherwise pass the add onto the content pane.
- if (isRootPaneCheckingEnabled())
+ if (isRootPaneCheckingEnabled() && comp != rootPane)
getContentPane().add(comp,constraints,index);
else
super.addImpl(comp, constraints, index);
{
while (toRemove.hasMoreElements())
{
- TreePath current = (TreePath) toRemove.nextElement();
+ TreePath current = toRemove.nextElement();
Enumeration descendants = getDescendantToggledPaths(current);
while (descendants.hasMoreElements())
import java.util.Set;
import java.util.WeakHashMap;
-import javax.swing.text.JTextComponent;
-
/**
* <p>The repaint manager holds a set of dirty regions, invalid components,
* and a double buffer surface. The dirty regions and invalid components
Object o;
try
{
- o = getter.invoke(component, null);
+ o = getter.invoke(component);
return o;
}
catch (Exception ex)
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
-import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
fmet = g.getFontMetrics();
g.fillRect(
/* x */ x + fmet.stringWidth(text.substring(0, underlinedIndex)),
- /* y */ y + fmet.getDescent() - 1,
+ /* y */ y + 1,
/* width */ fmet.charWidth(text.charAt(underlinedIndex)),
/* height */ 1);
}
import javax.swing.KeyStroke;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.LabelUI;
import javax.swing.text.View;
*/
static Icon nullIcon;
- /**
- * The special value of the mouse event is sent indicating that this is not
- * just the mouse click, but the mouse click on the selected node. Sending
- * such event forces to start the cell editing session.
- */
- static final MouseEvent EDIT = new MouseEvent(new Label(), 7, 7, 7, 7, 7, 7,
- false);
-
/**
* Creates a new BasicTreeUI object.
*/
package javax.swing.plaf.metal;
-import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Rectangle;
import java.io.Serializable;
-import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIManager;
int columnCount = tableColumns.size();
for (int i = 0; i < columnCount; i++)
{
- TableColumn tc = (TableColumn) tableColumns.get(i);
+ TableColumn tc = tableColumns.get(i);
if (identifier.equals(tc.getIdentifier()))
return i;
}
*/
public TableColumn getColumn(int columnIndex)
{
- return (TableColumn) tableColumns.get(columnIndex);
+ return tableColumns.get(columnIndex);
}
/**
{
for (int i = 0; i < tableColumns.size(); ++i)
{
- int w = ((TableColumn) tableColumns.get(i)).getWidth();
+ int w = (tableColumns.get(i)).getWidth();
if (0 <= x && x < w)
return i;
else
totalColumnWidth = 0;
for (int i = 0; i < tableColumns.size(); ++i)
{
- totalColumnWidth += ((TableColumn) tableColumns.get(i)).getWidth();
+ totalColumnWidth += tableColumns.get(i).getWidth();
}
}
}
private void insertElement(ElementSpec spec)
{
+ if (elementStack.isEmpty())
+ return;
+
Edit edit = (Edit) elementStack.peek();
switch (spec.getType())
{
if (bg != null)
{
g.setColor(bg);
- System.err.println("fill background: " + bg);
g.fillRect(r.x, r.y, r.width, r.height);
}
package javax.swing.text;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Rectangle;
import java.awt.Shape;
import javax.swing.SizeRequirements;
}
else
{ // What else to do here?
- Style s = (Style)doc.getStyle("default");
+ Style s = doc.getStyle("default");
if(s != null)
writeStyle( s );
}
package javax.swing.text.html;
-import javax.swing.ButtonGroup;
import javax.swing.JToggleButton.ToggleButtonModel;
class ResetableToggleButtonModel
public static DTD getDTD(String name)
throws IOException
{
- DTD d = (DTD) dtdHash.get(name);
+ DTD d = dtdHash.get(name);
if (d == null)
{
*/
public Element getElement(int index)
{
- return (Element) elements.get(index);
+ return elements.get(index);
}
/**
*/
public Entity getEntity(String entity_name)
{
- return (Entity) entityHash.get(entity_name);
+ return entityHash.get(entity_name);
}
/**
import gnu.javax.swing.text.html.parser.support.gnuStringIntMapper;
-import java.io.Serializable;
-
/**
* <p>Stores information, obtained by parsing SGML DTL
* <!ENTITY % .. > tag.</p>
*/
public void remove(int index)
{
- MutableTreeNode child = (MutableTreeNode) children.remove(index);
+ MutableTreeNode child = children.remove(index);
child.setParent(null);
}
{
node = node.getParent();
size = node.getChildCount();
- index = ((Integer) stack.pop()).intValue() + 1;
+ index = stack.pop().intValue() + 1;
current--;
}
while (index >= size
/** Provides an enumeration of a tree in breadth-first traversal
* order.
*/
- static class BreadthFirstEnumeration implements Enumeration
+ static class BreadthFirstEnumeration implements Enumeration<TreeNode>
{
- LinkedList queue = new LinkedList();
+ LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
BreadthFirstEnumeration(TreeNode node)
{
return !queue.isEmpty();
}
- public Object nextElement()
+ @SuppressWarnings("unchecked")
+ public TreeNode nextElement()
{
if (queue.isEmpty())
throw new NoSuchElementException("No more elements left.");
- TreeNode node = (TreeNode) queue.removeFirst();
+ TreeNode node = queue.removeFirst();
- Enumeration children = node.children();
+ Enumeration<TreeNode> children =
+ (Enumeration<TreeNode>) node.children();
while (children.hasMoreElements())
queue.add(children.nextElement());
/** Provides an enumeration of a tree traversing it
* preordered.
*/
- static class PreorderEnumeration implements Enumeration
+ static class PreorderEnumeration implements Enumeration<TreeNode>
{
TreeNode next;
- Stack childrenEnums = new Stack();
+ Stack<Enumeration<TreeNode>> childrenEnums =
+ new Stack<Enumeration<TreeNode>>();
+ @SuppressWarnings("unchecked")
PreorderEnumeration(TreeNode node)
{
next = node;
- childrenEnums.push(node.children());
+ childrenEnums.push((Enumeration<TreeNode>) node.children());
}
public boolean hasMoreElements()
return next != null;
}
- public Object nextElement()
+ public TreeNode nextElement()
{
if (next == null)
throw new NoSuchElementException("No more elements left.");
- Object current = next;
+ TreeNode current = next;
- Enumeration children = (Enumeration) childrenEnums.peek();
+ Enumeration<TreeNode> children = childrenEnums.peek();
// Retrieves the next element.
next = traverse(children);
return current;
}
- private TreeNode traverse(Enumeration children)
+ @SuppressWarnings("unchecked")
+ private TreeNode traverse(Enumeration<TreeNode> children)
{
// If more children are available step down.
if (children.hasMoreElements())
{
- TreeNode child = (TreeNode) children.nextElement();
- childrenEnums.push(child.children());
+ TreeNode child = children.nextElement();
+ childrenEnums.push((Enumeration<TreeNode>) child.children());
return child;
}
return null;
else
{
- return traverse((Enumeration) childrenEnums.peek());
+ return traverse(childrenEnums.peek());
}
}
}
/** Provides an enumeration of a tree traversing it
* postordered (= depth-first).
*/
- static class PostorderEnumeration implements Enumeration
+ static class PostorderEnumeration implements Enumeration<TreeNode>
{
Stack<TreeNode> nodes = new Stack<TreeNode>();
- Stack childrenEnums = new Stack();
+ Stack<Enumeration<TreeNode>> childrenEnums =
+ new Stack<Enumeration<TreeNode>>();
+ @SuppressWarnings("unchecked")
PostorderEnumeration(TreeNode node)
{
nodes.push(node);
- childrenEnums.push(node.children());
+ childrenEnums.push((Enumeration<TreeNode>) node.children());
}
public boolean hasMoreElements()
return !nodes.isEmpty();
}
- public Object nextElement()
+ public TreeNode nextElement()
{
if (nodes.isEmpty())
throw new NoSuchElementException("No more elements left!");
- Enumeration children = (Enumeration) childrenEnums.peek();
+ Enumeration<TreeNode> children = childrenEnums.peek();
return traverse(children);
}
- private Object traverse(Enumeration children)
+ @SuppressWarnings("unchecked")
+ private TreeNode traverse(Enumeration<TreeNode> children)
{
if (children.hasMoreElements())
{
- TreeNode node = (TreeNode) children.nextElement();
+ TreeNode node = children.nextElement();
nodes.push(node);
- Enumeration newChildren = node.children();
+ Enumeration<TreeNode> newChildren =
+ (Enumeration<TreeNode>) node.children();
childrenEnums.push(newChildren);
return traverse(newChildren);
// Returns the node whose children
// have all been visited. (= postorder)
- Object next = nodes.peek();
+ TreeNode next = nodes.peek();
nodes.pop();
return next;
* Font to paint with, null indicates font of renderer is to be used.
*/
protected Font font;
-
- /**
- * Helper field used to save the last path seen while the timer was
- * running.
- */
- private TreePath tPath;
-
+
/**
* Constructs a DefaultTreeCellEditor object for a JTree using the
* specified renderer and a default editor. (Use this constructor
Color c = UIManager.getColor("Tree.editorBorderSelectionColor");
setBorderSelectionColor(c);
}
-
- /**
- * Configures the editing component whenever it is null.
- *
- * @param tree the tree to configure to component for.
- * @param renderer the renderer used to set up the nodes
- * @param editor the editor used
- */
- private void configureEditingComponent(JTree tree,
- DefaultTreeCellRenderer renderer,
- TreeCellEditor editor)
- {
- if (tree != null && lastPath != null)
- {
- Object val = lastPath.getLastPathComponent();
- boolean isLeaf = tree.getModel().isLeaf(val);
- boolean expanded = tree.isExpanded(lastPath);
- determineOffset(tree, val, true, expanded, isLeaf, lastRow);
-
- // set up icon
- if (isLeaf)
- renderer.setIcon(renderer.getLeafIcon());
- else if (expanded)
- renderer.setIcon(renderer.getOpenIcon());
- else
- renderer.setIcon(renderer.getClosedIcon());
- editingIcon = renderer.getIcon();
-
- editingComponent = getTreeCellEditorComponent(tree, val, true,
- expanded, isLeaf, lastRow);
- }
- }
/**
* writeObject
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
-import java.awt.FontMetrics;
import java.awt.Graphics;
-import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.LookAndFeel;
-import javax.swing.SwingUtilities;
import javax.swing.UIManager;
-import javax.swing.border.Border;
import javax.swing.plaf.UIResource;
/**
int xOffset = -1;
if (bgColor != null)
{
- Icon i = getIcon();
xOffset = getXOffset();
g.setColor(bgColor);
g.fillRect(xOffset, 0, getWidth() - xOffset, getHeight());
* @see #removeSelectionPaths(TreePath[])
* @see #setSelectionPaths(TreePath[])
*/
- private transient HashSet selectedPaths;
+ private transient HashSet<TreePath> selectedPaths;
/**
* A supporting datastructure that is used in addSelectionPaths() and
* @see #removeSelectionPaths(TreePath[])
* @see #setSelectionPaths(TreePath[])
*/
- private transient HashSet tmpPaths;
+ private transient HashSet<TreePath> tmpPaths;
/**
* Constructs a new DefaultTreeSelectionModel.
listSelectionModel = new DefaultListSelectionModel();
listenerList = new EventListenerList();
leadIndex = -1;
- tmpPaths = new HashSet();
- selectedPaths = new HashSet();
+ tmpPaths = new HashSet<TreePath>();
+ selectedPaths = new HashSet<TreePath>();
}
/**
cloned.listenerList = new EventListenerList();
cloned.listSelectionModel =
(DefaultListSelectionModel) listSelectionModel.clone();
- cloned.selectedPaths = new HashSet();
- cloned.tmpPaths = new HashSet();
+ cloned.selectedPaths = new HashSet<TreePath>();
+ cloned.tmpPaths = new HashSet<TreePath>();
return cloned;
}
newLength = 1;
}
// Find new paths.
- Vector changedPaths = null;
+ Vector<PathPlaceHolder> changedPaths = null;
tmpPaths.clear();
int validPaths = 0;
TreePath oldLeadPath = leadPath;
if (! selectedPaths.contains(paths[i]))
{
if (changedPaths == null)
- changedPaths = new Vector();
+ changedPaths = new Vector<PathPlaceHolder>();
changedPaths.add(new PathPlaceHolder(paths[i], true));
}
leadPath = paths[i];
// Some of the paths are already selected, put together
// the new selection carefully.
newSelection = new TreePath[validPaths];
- Iterator newPaths = tmpPaths.iterator();
+ Iterator<TreePath> newPaths = tmpPaths.iterator();
validPaths = 0;
for (int i = 0; newPaths.hasNext(); i++)
- newSelection[i] = (TreePath) newPaths.next();
+ newSelection[i] = newPaths.next();
}
else
{
if (selection[i] != null && ! tmpPaths.contains(selection[i]))
{
if (changedPaths == null)
- changedPaths = new Vector();
+ changedPaths = new Vector<PathPlaceHolder>();
changedPaths.add(new PathPlaceHolder(selection[i], false));
}
}
// Perform changes and notification.
selection = newSelection;
- HashSet tmp = selectedPaths;
+ HashSet<TreePath> tmp = selectedPaths;
selectedPaths = tmpPaths;
tmpPaths = tmp;
tmpPaths.clear();
}
else
{
- Vector changedPaths = null;
+ Vector<PathPlaceHolder> changedPaths = null;
tmpPaths.clear();
int validPaths = 0;
TreePath oldLeadPath = leadPath;
{
validPaths++;
if (changedPaths == null)
- changedPaths = new Vector();
+ changedPaths = new Vector<PathPlaceHolder>();
changedPaths.add(new PathPlaceHolder(paths[i], true));
selectedPaths.add(paths[i]);
tmpPaths.add(paths[i]);
{
// Some of the paths are already selected, put together
// the new selection carefully.
- Iterator newPaths = tmpPaths.iterator();
+ Iterator<TreePath> newPaths = tmpPaths.iterator();
i = oldPaths;
while (newPaths.hasNext())
{
- newSelection[i] = (TreePath) newPaths.next();
+ newSelection[i] = newPaths.next();
i++;
}
}
clearSelection();
else
{
- Vector pathsToRemove = null;
+ Vector<PathPlaceHolder> pathsToRemove = null;
for (int i = paths.length - 1; i >= 0; i--)
{
if (paths[i] != null && selectedPaths.contains(paths[i]))
{
if (pathsToRemove == null)
- pathsToRemove = new Vector();
+ pathsToRemove = new Vector<PathPlaceHolder>();
selectedPaths.remove(paths[i]);
pathsToRemove.add(new PathPlaceHolder(paths[i],
false));
else
{
selection = new TreePath[selection.length - numRemove];
- Iterator keep = selectedPaths.iterator();
+ Iterator<TreePath> keep = selectedPaths.iterator();
for (int valid = 0; keep.hasNext(); valid++)
- selection[valid] = (TreePath) keep.next();
+ selection[valid] = keep.next();
}
// Update lead path.
if (leadPath != null && ! selectedPaths.contains(leadPath))
|| selectionMode == DISCONTIGUOUS_TREE_SELECTION)
return true;
- HashSet set = new HashSet();
+ HashSet<TreePath> set = new HashSet<TreePath>();
for (int i = 0; i < selection.length; i++)
set.add(selection[i]);
set.remove(paths[i]);
TreePath[] remaining = new TreePath[set.size()];
- Iterator iter = set.iterator();
+ Iterator<TreePath> iter = set.iterator();
for (int i = 0; i < remaining.length; i++)
- remaining[i] = (TreePath) iter.next();
+ remaining[i] = iter.next();
return arePathsContiguous(remaining);
}
* @param vPaths the vector of the changed patches
* @param oldLeadSelection the old selection index
*/
- protected void notifyPathChange(Vector vPaths, TreePath oldLeadSelection)
+ protected void notifyPathChange(Vector<PathPlaceHolder> vPaths,
+ TreePath oldLeadSelection)
{
int numChangedPaths = vPaths.size();
TreePath[] paths = new TreePath[numChangedPaths];
for (int i = 0; i < numChangedPaths; i++)
{
- PathPlaceHolder p = (PathPlaceHolder) vPaths.get(i);
+ PathPlaceHolder p = vPaths.get(i);
news[i] = p.isNew;
paths[i] = p.path;
}
}
}
- LinkedList lpath = new LinkedList();
+ LinkedList<Object> lpath = new LinkedList<Object>();
NodeRecord rp = this;
while (rp != null)
{
/**
* The set of all expanded tree nodes.
*/
- Set expanded = new HashSet();
+ Set<Object> expanded = new HashSet<Object>();
/**
* Maps nodes to the row numbers.
*/
- Hashtable nodes = new Hashtable();
+ Hashtable<Object,NodeRecord> nodes = new Hashtable<Object,NodeRecord>();
/**
* Maps row numbers to nodes.
*/
- Hashtable row2node = new Hashtable();
+ Hashtable<Integer,Object> row2node = new Hashtable<Integer,Object>();
/**
* If true, the row map must be recomputed before using.
if (dirty)
update();
Object last = path.getLastPathComponent();
- NodeRecord r = (NodeRecord) nodes.get(last);
+ NodeRecord r = nodes.get(last);
if (r == null)
// This node is not visible.
{
return null;
else
{
- NodeRecord r = (NodeRecord) nodes.get(last);
+ NodeRecord r = nodes.get(last);
return r.getPath();
}
}
if (dirty) update();
- NodeRecord r = (NodeRecord) nodes.get(path.getLastPathComponent());
+ NodeRecord r = nodes.get(path.getLastPathComponent());
if (r == null)
return - 1;
else
// As the rows have arbitrary height, we need to iterate.
NodeRecord best = null;
NodeRecord r;
- Enumeration en = nodes.elements();
+ Enumeration<NodeRecord> en = nodes.elements();
int dist = Integer.MAX_VALUE;
while (en.hasMoreElements() && dist > 0)
{
- r = (NodeRecord) en.nextElement();
+ r = en.nextElement();
if (best == null)
{
best = r;
}
/**
- * Get the enumeration over all visible pathes that start from the given
+ * Get the enumeration over all visible paths that start from the given
* parent path.
*
* @param parentPath the parent path
for (int i = 0; i < parentPath.getPathCount(); i++)
{
node = parentPath.getPathComponent(i);
- nr = (NodeRecord) nodes.get(node);
+ nr = nodes.get(node);
if (nr.row >= 0)
p.add(node);
}
if (dirty)
update();
totalHeight = 0;
- Enumeration en = nodes.elements();
+ Enumeration<NodeRecord> en = nodes.elements();
while (en.hasMoreElements())
{
- NodeRecord nr = (NodeRecord) en.nextElement();
+ NodeRecord nr = en.nextElement();
Rectangle r = nr.getBounds();
totalHeight += r.height;
}
update();
maximalWidth = 0;
- Enumeration en = nodes.elements();
+ Enumeration<NodeRecord> en = nodes.elements();
while (en.hasMoreElements())
{
- NodeRecord nr = (NodeRecord) en.nextElement();
+ NodeRecord nr = en.nextElement();
Rectangle r = nr.getBounds();
if (r.x + r.width > maximalWidth)
maximalWidth = r.x + r.width;
}
}
- LinkedList lpath = new LinkedList();
+ LinkedList<Object> lpath = new LinkedList<Object>();
NodeRecord rp = this;
while (rp != null)
{
if (rp.parent != null)
{
Object parent = rp.parent;
- rp = (NodeRecord) nodes.get(parent);
+ rp = nodes.get(parent);
// Add the root node, even if it is not visible.
if (rp == null)
lpath.addFirst(parent);
/**
* The set of all expanded tree nodes.
*/
- Set expanded = new HashSet();
+ Set<Object> expanded = new HashSet<Object>();
/**
* Maps nodes to the row numbers.
*/
- Hashtable nodes = new Hashtable();
+ Hashtable<Object,NodeRecord> nodes = new Hashtable<Object,NodeRecord>();
/**
* Maps row numbers to nodes.
*/
- ArrayList row2node = new ArrayList();
+ ArrayList<Object> row2node = new ArrayList<Object>();
/**
* If true, the row map must be recomputed before using.
*/
public void invalidatePathBounds(TreePath path)
{
- NodeRecord r = (NodeRecord) nodes.get(path.getLastPathComponent());
+ NodeRecord r = nodes.get(path.getLastPathComponent());
if (r != null)
r.bounds = null;
}
Object last = path.getLastPathComponent();
Rectangle result = null;
- NodeRecord r = (NodeRecord) nodes.get(last);
+ NodeRecord r = nodes.get(last);
if (r != null)
{
// The RI allows null arguments for rect, in which case a new Rectangle
if (dirty)
update();
- NodeRecord r = (NodeRecord) nodes.get(path.getLastPathComponent());
+ NodeRecord r = nodes.get(path.getLastPathComponent());
if (r == null)
return - 1;
else
// As the rows have arbitrary height, we need to iterate.
NodeRecord best = null;
NodeRecord r;
- Enumeration en = nodes.elements();
+ Enumeration<NodeRecord> en = nodes.elements();
int dist = Integer.MAX_VALUE;
while (en.hasMoreElements() && dist > 0)
{
- r = (NodeRecord) en.nextElement();
+ r = en.nextElement();
if (best == null)
{
best = r;
}
/**
- * Get the enumeration over all visible pathes that start from the given
+ * Get the enumeration over all visible paths that start from the given
* parent path.
*
* @param parentPath the parent path
for (int i = 0; i < parentPath.getPathCount(); i++)
{
node = parentPath.getPathComponent(i);
- nr = (NodeRecord) nodes.get(node);
+ nr = nodes.get(node);
if (nr != null && nr.row >= 0)
p.add(node);
}
int rowCount = getRowCount();
if (rowCount > 0)
{
- NodeRecord last = (NodeRecord) nodes.get(row2node.get(rowCount - 1));
+ NodeRecord last = nodes.get(row2node.get(rowCount - 1));
height = last.bounds.y + last.bounds.height;
}
return height;
update();
maximalWidth = 0;
- Enumeration en = nodes.elements();
+ Enumeration<NodeRecord> en = nodes.elements();
while (en.hasMoreElements())
{
- NodeRecord nr = (NodeRecord) en.nextElement();
+ NodeRecord nr = en.nextElement();
if (nr != null)
{
Rectangle r = nr.getBounds();
{
object = obj;
undoRedoName = name;
- preState = new Hashtable();
- postState = new Hashtable();
+ preState = new Hashtable<Object,Object>();
+ postState = new Hashtable<Object,Object>();
obj.storeState(preState);
}
size = edits.size();
for (int i = size - 1; i >= 0; i--)
- ((UndoableEdit) edits.get(i)).die();
+ edits.get(i).die();
indexOfNextAdd = 0;
edits.clear();
}
return;
for (int i = to; i >= from; i--)
- ((UndoableEdit) edits.get(i)).die();
+ edits.get(i).die();
// Remove the range [from .. to] from edits. If from == to, which
// is likely to be a very common case, we can do better than
for (int i = indexOfNextAdd - 1; i >= 0; i--)
{
- result = (UndoableEdit) edits.get(i);
+ result = edits.get(i);
if (result.isSignificant())
return result;
}
for (int i = indexOfNextAdd; i < edits.size(); i++)
{
- result = (UndoableEdit) edits.get(i);
+ result = edits.get(i);
if (result.isSignificant())
return result;
}
while (true)
{
indexOfNextAdd -= 1;
- cur = (UndoableEdit) edits.get(indexOfNextAdd);
+ cur = edits.get(indexOfNextAdd);
cur.undo();
if (cur == edit)
return;
while (true)
{
- cur = (UndoableEdit) edits.get(indexOfNextAdd);
+ cur = edits.get(indexOfNextAdd);
indexOfNextAdd += 1;
cur.redo();
if (cur == edit)
--- /dev/null
+/* Diagnostic.java --
+ Copyright (C) 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. */
+
+package javax.tools;
+
+import java.util.Locale;
+
+/**
+ * Encapsulates diagnostic information from a tool. This usually includes
+ * (but is not required) a position in a source file, line and column number
+ * information and a message.
+ *
+ * @author Roman Kennke (roman@kennke.org)
+ *
+ * @param <S> the type of the source object
+ *
+ * @since 1.6
+ */
+public interface Diagnostic<S>
+{
+ /**
+ * The kind of diagnostic information.
+ */
+ public static enum Kind
+ {
+ /**
+ * Indicates and error.
+ */
+ ERROR,
+
+ /**
+ * Indicates a warning.
+ */
+ WARNING,
+
+ /**
+ * Indicates a mandatory warning.
+ */
+ MANDATORY_WARNING,
+
+ /**
+ * Indicates a note.
+ */
+ NOTE,
+
+ /**
+ * Indicates something else.
+ */
+ OTHER
+ }
+
+ /**
+ * Indicates that this diagnostic object doesn't carry position information.
+ */
+ public static final long NOPOS = -1L;
+
+ /**
+ * Returns the kind of this diagnostic object.
+ *
+ * @return the kind of this diagnostic object
+ */
+ Kind getKind();
+
+ /**
+ * Returns the source of this diagnostic object.
+ *
+ * @return the source of this diagnostic object
+ */
+ S getSource();
+
+ /**
+ * Returns the position in the source object. This is a zero based value,
+ * or {@link # NOPOS}, indicating that this doesn't carry position
+ * information.
+ *
+ * @return the position in the source object
+ */
+ long getPosition();
+
+ /**
+ * Returns the start position in the source object. This is a zero based
+ * value, or {@link #NOPOS}, indicating that this doesn't carry position
+ * information.
+ *
+ * @return the start position in the source object
+ */
+ long getStartPosition();
+
+ /*
+ * Returns the end position in the source object. This is a zero based
+ * value, or {@link #NOPOS}, indicating that this doesn't carry position
+ * information.
+ *
+ * @return the end position in the source object
+ */
+ long getEndPosition();
+
+ /**
+ * Returns the line number or {@link #NOPOS}, indicating that this doesn't
+ * carry position information. This is a 1-based value indicating the line
+ * in the source object.
+ *
+ * @return the line number
+ */
+ long getLineNumber();
+
+ /**
+ * Returns the column number or {@link #NOPOS}, indicating that this doesn't
+ * carry position information. This is a 1-based value indicating the column
+ * in the source object.
+ *
+ * @return the column number
+ */
+ long getColumnNumber();
+
+ /**
+ * Return a diagnostic code. This is implementation dependend and might
+ * be <code>null</code>.
+ *
+ * @return a diagnostic code or <code>null</code>
+ */
+ String getCode();
+
+ /**
+ * Returns a localized message. This is implementation dependend. If
+ * <code>locale</code> is <code>null</code> this uses the default locale.
+ *
+ * @param locale the locale, or <code>null</code>
+ *
+ * @return a localized message
+ */
+ String getMessage(Locale locale);
+}
--- /dev/null
+/* DiagnosticListener.java --
+ Copyright (C) 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. */
+
+package javax.tools;
+
+/**
+ * Receices diagnostic notifications from tools.
+ *
+ * @author Roman Kennke (roman@kennke.org)
+ *
+ * @param <S> the type of the source object
+ *
+ * @since 1.6
+ */
+public interface DiagnosticListener<S>
+{
+
+ /**
+ * Receive diagnostic information from tools.
+ *
+ * @param diagnostic the diagnostic information
+ *
+ * @throws NullPointerException if <code>diagnostic</code> is
+ * <code>null</code> and the implemenatation can't handle this
+ */
+ void report(Diagnostic<? extends S> diagnostic);
+}
--- /dev/null
+/* FileObject.java --
+ Copyright (C) 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. */
+
+package javax.tools;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.URI;
+
+/**
+ * Abstraction for all kinds of file objects used by tools, e.g. regular files,
+ * memory cache, or database data.
+ *
+ * @author Roman Kennke (roman@kennke.org)
+ *
+ * @since 1.6
+ */
+public interface FileObject
+{
+
+ /**
+ * Returns a URI that represents this file object.
+ *
+ * @return a URI that represents this file object
+ */
+ URI toURI();
+
+ /**
+ * Returns a name for this file object. The exact name is implementation
+ * dependent.
+ *
+ * @return a name for this file object
+ */
+ String getName();
+
+ /**
+ * Opens this file for reading and returns an input stream.
+ *
+ * @return an input stream to read this file object
+ *
+ * @throws IOException if an I/O error occured
+ * @throws IllegalStateException if this file was opened for writing and
+ * does not support reading
+ * @throws UnsupportedOperationException if this kind of file does not allow
+ * byte reading
+ */
+ InputStream openInputStream() throws IOException;
+
+ /**
+ * Opens this file for writing and returns an output stream.
+ *
+ * @return an output stream for writing this file object
+ *
+ * @throws IOException if an I/O error occurs
+ * @throws IllegalStateException if this file was opened for reading and
+ * does not support writing
+ * @throws UnsupportedOperationException if this kind of file does not allow
+ * byte writing
+ */
+ OutputStream openOutputStream() throws IOException;
+
+ /**
+ * Opens this file for reading and returns a reader.
+ *
+ * @return a reader for reading this file object
+ *
+ * @throws IOException if an I/O error occurs
+ * @throws IllegalStateException if this file was opened for writing and
+ * does not support reading
+ * @throws UnsupportedOperationException if this kind of file does not allow
+ * character reading
+ */
+ Reader openReader() throws IOException;
+
+ /**
+ * Returns the character content of the file, if available. Any byte
+ * that cannot be decoded will be replaced by the default replacement
+ * character. A diagnostic may be reported, unless
+ * <code>ignoreEncodingErrors</code> is <code>true</code>.
+ *
+ * @param ignoreEncodingErrors <code>true</code> when encoding errors should be ignored
+ * <code>false</code> otherwise
+ * @return the character content, or <code>null</code> if not available
+ *
+ * @throws IOException if an I/O error occurs
+ */
+ CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException;
+
+ /**
+ * Opens this file for writer and returns a writer.
+ *
+ * @return a writer for writing this file object
+ *
+ * @throws IOException if an I/O error occurs
+ * @throws IllegalStateException if this file was opened for reading and
+ * does not support writing
+ * @throws UnsupportedOperationException if this kind of file does not allow
+ * character writing
+ */
+ Writer openWriter() throws IOException;
+
+ /**
+ * Returns the time when the file was last modified. The time is measured
+ * like in <code>System.currentTimeMillis()</code>.
+ *
+ * @return the time when the file was last modified
+ */
+ long getLastModified();
+
+ /**
+ * Deletes this file object. In case of errors this returns
+ * <code>false</code>.
+ *
+ * @return <code>true</code> when the file deletion was successful,
+ * <code>false</code> otherwise
+ */
+ boolean delete();
+}
package javax.xml.datatype;
-import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.GregorianCalendar;
public static QName valueOf(String qNameAsString)
{
+ if (qNameAsString == null)
+ throw new IllegalArgumentException("qNameAsString can't be null");
+
String namespaceUri = "", prefix = null;
int start = qNameAsString.indexOf('{');
int end = qNameAsString.indexOf('}');
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
-import java.io.Reader;
import java.util.Iterator;
import java.util.Properties;
import javax.xml.namespace.NamespaceContext;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.Reader;
-import java.io.Writer;
import java.util.Properties;
import javax.xml.stream.util.XMLEventAllocator;
import javax.xml.transform.Source;
/**
* Returns the type of this attribute.
*/
- QName getDTDType();
+ String getDTDType();
/**
* Indicates whether this attribute was specified in the input source, or
## this file and restart the make process again
sinclude $(JAVA_DEPEND)
-compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(USER_CLASSLIB):$(PATH_TO_ESCHER)
+compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(PATH_TO_GLIBJ_ZIP):$(PATH_TO_ESCHER)
# handling source to bytecode compiler programs like gcj, jikes and kjc
-if FOUND_GCJ
-## See the compile-classes target.
-## There's no point in warning, and we always want debug info.
-## GCJ LOCAL: use srcdir
-JCOMPILER = $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath '' --classpath $(compile_classpath) -d $(srcdir) @classes
-else
-if FOUND_JIKES
-JCOMPILER = $(JIKES) $(JIKESWARNINGS) +F $(JIKESENCODING) -bootclasspath '' -extdirs '' -sourcepath '' --classpath $(compile_classpath) -d . @classes
-else
-if FOUND_KJC
-## FIXME: from what I can tell, kjc does not support a -encoding option.
-JCOMPILER = $(KJC) -classpath .:$(USER_CLASSLIB) -d . @classes
-else
-if FOUND_ECJ
-JCOMPILER = $(ECJ) -source 1.4 -encoding UTF-8 -warn:-deprecation,serial,unused -proceedOnError -bootclasspath '' -classpath $(compile_classpath) -d . @classes
-endif # FOUND_ECJ
-endif # FOUND_KJC
-endif # FOUND_GCJ
-endif # FOUND_JIKES
+## GCJ LOCAL: use srcdir, don't pass $(JAVACFLAGS) $(JAVAC_MEM_OPT) -source 1.5 -target 1.5
+JCOMPILER = $(JAVAC) -g -w --encoding=UTF-8 -bootclasspath '' --classpath $(compile_classpath) -d $(srcdir) @classes
if CREATE_COLLECTIONS
COLLECTIONS = collections.jar
./mkcollections.pl $(top_srcdir)
$(JCOMPILER) `$(FIND) $(COLLECTIONS_PREFIX) -name '*.java' -type f -print`
if test "$(FASTJAR)" != ""; then \
- $(FASTJAR) cf $@ $(COLLECTIONS_PREFIX); \
+ "$(FASTJAR)" cf $@ $(COLLECTIONS_PREFIX); \
else \
echo "fastjar not found" > collections.jar; \
fi
if INSTALL_CLASS_FILES
install-data-local: genclasses compile-classes
- -$(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)
+ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
cp -R gnu $(DESTDIR)$(pkgdatadir)
cp -R java $(DESTDIR)$(pkgdatadir)
cp -R javax $(DESTDIR)$(pkgdatadir)
glibj.zip: classes compile-classes resources
if test "$(ZIP)" != ""; then $(ZIP) -r -D glibj.zip gnu java javax org sun META-INF > /dev/null; fi
- if test "$(FASTJAR)" != ""; then $(FASTJAR) cf glibj.zip gnu java javax org sun META-INF; fi
+ if test "$(FASTJAR)" != ""; then "$(FASTJAR)" cf glibj.zip gnu java javax org sun META-INF; fi
endif # USE_PREBUILT_GLIBJ_ZIP
touch compile-classes
# endif
-EXTRA_DIST = standard.omit.in mkcollections.pl.in Makefile.gcj split-for-gcj.sh
+EXTRA_DIST = standard.omit.in mkcollections.pl.in Makefile.gcj split-for-gcj.sh glibj.zip
CLEANFILES = compile-classes resources classes \
glibj.zip classes.1 classes.2 Makefile.deps \
$(top_builddir)/gnu/java/locale/LocaleData.java \
rm -f $(distdir)/../gnu/classpath/Configuration.java
rm -f $(distdir)/../gnu/java/security/Configuration.java
rm -f $(distdir)/../gnu/java/locale/LocaleData.java
+ rm -f $(distdir)/glibj.zip
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
JAVA_DEPEND = java.dep
-compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(USER_CLASSLIB):$(PATH_TO_ESCHER)
-@FOUND_ECJ_TRUE@@FOUND_GCJ_FALSE@@FOUND_JIKES_FALSE@@FOUND_KJC_FALSE@JCOMPILER = $(ECJ) -source 1.4 -encoding UTF-8 -warn:-deprecation,serial,unused -proceedOnError -bootclasspath '' -classpath $(compile_classpath) -d . @classes
-@FOUND_GCJ_FALSE@@FOUND_JIKES_FALSE@@FOUND_KJC_TRUE@JCOMPILER = $(KJC) -classpath .:$(USER_CLASSLIB) -d . @classes
-@FOUND_GCJ_FALSE@@FOUND_JIKES_TRUE@JCOMPILER = $(JIKES) $(JIKESWARNINGS) +F $(JIKESENCODING) -bootclasspath '' -extdirs '' -sourcepath '' --classpath $(compile_classpath) -d . @classes
+compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(PATH_TO_GLIBJ_ZIP):$(PATH_TO_ESCHER)
# handling source to bytecode compiler programs like gcj, jikes and kjc
-@FOUND_GCJ_TRUE@JCOMPILER = $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath '' --classpath $(compile_classpath) -d $(srcdir) @classes
+JCOMPILER = $(JAVAC) -g -w --encoding=UTF-8 -bootclasspath '' --classpath $(compile_classpath) -d $(srcdir) @classes
@CREATE_COLLECTIONS_TRUE@COLLECTIONS = collections.jar
@BUILD_CLASS_FILES_TRUE@noinst_DATA = genclasses compile-classes resources
# endif
-EXTRA_DIST = standard.omit.in mkcollections.pl.in Makefile.gcj split-for-gcj.sh
+EXTRA_DIST = standard.omit.in mkcollections.pl.in Makefile.gcj split-for-gcj.sh glibj.zip
CLEANFILES = compile-classes resources classes \
glibj.zip classes.1 classes.2 Makefile.deps \
$(top_builddir)/gnu/java/locale/LocaleData.java \
@CREATE_COLLECTIONS_TRUE@ ./mkcollections.pl $(top_srcdir)
@CREATE_COLLECTIONS_TRUE@ $(JCOMPILER) `$(FIND) $(COLLECTIONS_PREFIX) -name '*.java' -type f -print`
@CREATE_COLLECTIONS_TRUE@ if test "$(FASTJAR)" != ""; then \
-@CREATE_COLLECTIONS_TRUE@ $(FASTJAR) cf $@ $(COLLECTIONS_PREFIX); \
+@CREATE_COLLECTIONS_TRUE@ "$(FASTJAR)" cf $@ $(COLLECTIONS_PREFIX); \
@CREATE_COLLECTIONS_TRUE@ else \
@CREATE_COLLECTIONS_TRUE@ echo "fastjar not found" > collections.jar; \
@CREATE_COLLECTIONS_TRUE@ fi
@INSTALL_CLASS_FILES_TRUE@install-data-local: genclasses compile-classes
-@INSTALL_CLASS_FILES_TRUE@ -$(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)
+@INSTALL_CLASS_FILES_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
@INSTALL_CLASS_FILES_TRUE@ cp -R gnu $(DESTDIR)$(pkgdatadir)
@INSTALL_CLASS_FILES_TRUE@ cp -R java $(DESTDIR)$(pkgdatadir)
@INSTALL_CLASS_FILES_TRUE@ cp -R javax $(DESTDIR)$(pkgdatadir)
@USE_PREBUILT_GLIBJ_ZIP_FALSE@glibj.zip: classes compile-classes resources
@USE_PREBUILT_GLIBJ_ZIP_FALSE@ if test "$(ZIP)" != ""; then $(ZIP) -r -D glibj.zip gnu java javax org sun META-INF > /dev/null; fi
-@USE_PREBUILT_GLIBJ_ZIP_FALSE@ if test "$(FASTJAR)" != ""; then $(FASTJAR) cf glibj.zip gnu java javax org sun META-INF; fi
+@USE_PREBUILT_GLIBJ_ZIP_FALSE@ if test "$(FASTJAR)" != ""; then "$(FASTJAR)" cf glibj.zip gnu java javax org sun META-INF; fi
resources: copy-vmresources.sh
@list=`cd $(top_srcdir)/resource && $(FIND) gnu java javax org -name \*\.properties -print -o -name \*\.css -print`; for p in $$list; do \
rm -f $(distdir)/../gnu/classpath/Configuration.java
rm -f $(distdir)/../gnu/java/security/Configuration.java
rm -f $(distdir)/../gnu/java/locale/LocaleData.java
+ rm -f $(distdir)/glibj.zip
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
-# ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun ltconfig.
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
-# Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
+# Generated from ltmain.m4sh; do not edit by hand
+
+# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 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.
+
# 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
# the Free Software Foundation; either version 2 of the License, or
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
-# Check that we have a working $echo.
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# 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
+#
+# 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
+#
+# MODE-ARGS vary depending on the MODE.
+# 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 1.2435 2007/03/18 18:44:42) 2.1a
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=2.1a
+TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
+package_revision=1.2435
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# 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
+# e.g. LANG=C (notably SCO).
+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ fi"
+done
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="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="/bin/sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# 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:
+progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=:
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+esac
+
+# 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='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname${mode+: }$mode: "${1+"$@"}
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ 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"`
+ done
+ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$opt_dry_run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+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="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "X$1" | $Xsed \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $SED -n '/^# Usage:/,/# -h/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ $ECHO
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ func_error "missing argument for $1"
+ exit_cmd=exit
+}
+
+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!
+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+"$@"}
+ # 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
cat <<EOF
$*
EOF
- exit 0
+ exit $EXIT_SUCCESS
fi
-# The name of this program.
-progname=`$echo "$0" | sed 's%^.*/%%'`
-modename="$progname"
-
-# Constants.
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION=1.4a-GCC3.0
-TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)"
-
-default_mode=
-help="Try \`$progname --help' for more information."
magic="%%%MAGIC variable%%%"
-mkdir="mkdir"
-mv="mv -f"
-rm="rm -f"
-
-# 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='s/\([\\`\\"$\\\\]\)/\\\1/g'
-SP2NL='tr \040 \012'
-NL2SP='tr \015\012 \040\040'
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-# We save the old values to restore during execute mode.
-if test "${LC_ALL+set}" = set; then
- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
-fi
-if test "${LANG+set}" = set; then
- save_LANG="$LANG"; LANG=C; export LANG
-fi
-
-if test "$LTCONFIG_VERSION" != "$VERSION"; then
- echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
- exit 1
-fi
-if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- echo "$modename: not configured to build any kind of library" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
- exit 1
-fi
# Global variables.
-mode=$default_mode
+# $mode is unset
nonopt=
-prev=
-prevopt=
-run=
-show="$echo"
-show_help=
execute_dlfiles=
+preserve_args=
lo2o="s/\\.lo\$/.${objext}/"
o2lo="s/\\.${objext}\$/.lo/"
-taglist=
-
-# Parse our command line options once, thoroughly.
-while test $# -gt 0
-do
- arg="$1"
- shift
+extracted_archives=
+extracted_serial=0
- case $arg in
- -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- case $prev in
- execute_dlfiles)
- execute_dlfiles="$execute_dlfiles $arg"
- ;;
- tag)
- tagname="$arg"
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
- # Check whether tagname contains only valid characters
- case $tagname in
- *[!-_A-Za-z0-9,/]*)
- echo "$progname: invalid tag name: $tagname" 1>&2
- exit 1
- ;;
- esac
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
- case $tagname in
- CC)
- # Don't test for the "default" C tag, as we know, it's there, but
- # not specially marked.
- taglist="$taglist $tagname"
- ;;
- *)
- if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
- taglist="$taglist $tagname"
- # Evaluate the configuration.
- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
- else
- echo "$progname: ignoring unknown tag $tagname" 1>&2
- fi
- ;;
- esac
- ;;
- *)
- eval "$prev=\$arg"
- ;;
- esac
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
- prev=
- prevopt=
- continue
- fi
- # Have we seen a non-optional argument yet?
- case $arg in
- --help)
- show_help=yes
- ;;
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
- --version)
- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
- exit 0
- ;;
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
- --config)
- sed -n -e '/^### BEGIN LIBTOOL CONFIG/,/^### END LIBTOOL CONFIG/p' < "$0"
# Now print the configurations for the tags.
for tagname in $taglist; do
- sed -n -e "/^### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
done
- exit 0
- ;;
-
- --debug)
- echo "$progname: enabling shell trace mode"
- set -x
- ;;
- --dry-run | -n)
- run=:
- ;;
+ exit $?
+}
- --features)
- echo "host: $host"
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+ $ECHO "host: $host"
if test "$build_libtool_libs" = yes; then
- echo "enable shared libraries"
+ $ECHO "enable shared libraries"
else
- echo "disable shared libraries"
+ $ECHO "disable shared libraries"
fi
if test "$build_old_libs" = yes; then
- echo "enable static libraries"
+ $ECHO "enable static libraries"
else
- echo "disable static libraries"
+ $ECHO "disable static libraries"
fi
- exit 0
- ;;
- --finish) mode="finish" ;;
+ exit $?
+}
- --mode) prevopt="--mode" prev=mode ;;
- --mode=*) mode="$optarg" ;;
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
- --quiet | --silent)
- show=:
- ;;
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
- --tag) prevopt="--tag" prev=tag ;;
- --tag=*)
- set tag "$optarg" ${1+"$@"}
- shift
- prev=tag
- ;;
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
- -dlopen)
- prevopt="-dlopen"
- prev=execute_dlfiles
- ;;
- -*)
- $echo "$modename: unrecognized option \`$arg'" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
- *)
- nonopt="$arg"
- break
- ;;
- esac
-done
+ clean)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-if test -n "$prevopt"; then
- $echo "$modename: option \`$prevopt' requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
-fi
+Remove files from the build directory.
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end. This prevents here-documents from being
-# left over by shells.
-exec_cmd=
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
-if test -z "$show_help"; then
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
- # Infer the operation mode.
- if test -z "$mode"; then
- case $nonopt in
- *cc | *++ | gcc* | *-gcc*)
- mode=link
- for arg
- do
- case $arg in
- -c)
- mode=compile
- break
- ;;
- esac
- done
- ;;
- *db | *dbx | *strace | *truss)
- mode=execute
- ;;
- *install*|cp|mv)
- mode=install
- ;;
- *rm)
- mode=uninstall
- ;;
- *)
- # If we have no mode, but dlfiles were specified, then do execute mode.
- test -n "$execute_dlfiles" && mode=execute
+ compile)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
- # Just use the default operation mode.
- if test -z "$mode"; then
- if test -n "$nonopt"; then
- $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
- else
- $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
- fi
- fi
- ;;
- esac
- fi
+Compile a source file into a libtool library object.
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$execute_dlfiles" && test "$mode" != execute; then
- $echo "$modename: unrecognized option \`-dlopen'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+This mode accepts the following additional options:
- # Change the help message to a mode-specific one.
- generic_help="$help"
- help="Try \`$modename --help --mode=$mode' for more information."
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
- # These modes are in order of execution frequency so that they run quickly.
- case $mode in
- # libtool compile mode
- compile)
- modename="$modename: compile"
- # Get the compilation command and the source file.
- base_compile=
- prev=
- lastarg=
- srcfile="$nonopt"
- suppress_output=
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
- user_target=no
- for arg
- do
- case $prev in
- "") ;;
- xcompiler)
- # Aesthetically quote the previous argument.
- prev=
- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
- case $arg in
- # Double-quote args containing other shell metacharacters.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- arg="\"$arg\""
- ;;
- esac
+ execute)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
- # Add the previous argument to base_compile.
- if test -z "$base_compile"; then
- base_compile="$lastarg"
- else
- base_compile="$base_compile $lastarg"
- fi
- continue
- ;;
- esac
+Automatically set library path, then run a program.
- # Accept any command-line options.
- case $arg in
- -o)
- if test "$user_target" != "no"; then
- $echo "$modename: you cannot specify \`-o' more than once" 1>&2
- exit 1
- fi
- user_target=next
- ;;
+This mode accepts the following additional options:
- -static)
- build_old_libs=yes
- continue
- ;;
+ -dlopen FILE add the directory containing FILE to the library path
- -prefer-pic)
- pic_mode=yes
- continue
- ;;
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
- -prefer-non-pic)
- pic_mode=no
- continue
- ;;
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
- -Xcompiler)
- prev=xcompiler
- continue
- ;;
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
- -Wc,*)
- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
- lastarg=
- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
- for arg in $args; do
- IFS="$save_ifs"
+ finish)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
- # Double-quote args containing other shell metacharacters.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- arg="\"$arg\""
- ;;
- esac
- lastarg="$lastarg $arg"
- done
- IFS="$save_ifs"
- lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+Complete the installation of libtool libraries.
- # Add the arguments to base_compile.
- if test -z "$base_compile"; then
- base_compile="$lastarg"
- else
- base_compile="$base_compile $lastarg"
- fi
- continue
- ;;
- esac
+Each LIBDIR is a directory that contains libtool libraries.
- case $user_target in
- next)
- # The next one is the -o target name
- user_target=yes
- continue
- ;;
- yes)
- # We got the output file
- user_target=set
- libobj="$arg"
- continue
- ;;
- esac
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
- # Accept the current argument as the source file.
- lastarg="$srcfile"
- srcfile="$arg"
+ install)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
- # Aesthetically quote the previous argument.
+Install executables or libraries.
- # Backslashify any backslashes, double quotes, and dollar signs.
- # These are the only characters that are still specially
- # interpreted inside of double-quoted scrings.
- lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
- # Double-quote args containing other shell metacharacters.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- case $lastarg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- lastarg="\"$lastarg\""
- ;;
- esac
+The following components of INSTALL-COMMAND are treated specially:
- # Add the previous argument to base_compile.
- if test -z "$base_compile"; then
- base_compile="$lastarg"
- else
- base_compile="$base_compile $lastarg"
- fi
- done
+ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
- case $user_target in
- set)
- ;;
- no)
- # Get the name of the library object.
- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
- ;;
- *)
- $echo "$modename: you must specify a target with \`-o'" 1>&2
- exit 1
- ;;
- esac
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
- # Recognize several different file suffixes.
- # If the user specifies -o file.o, it is replaced with file.lo
- xform='[cCFSfmso]'
- case $libobj in
- *.ada) xform=ada ;;
- *.adb) xform=adb ;;
- *.ads) xform=ads ;;
- *.asm) xform=asm ;;
- *.c++) xform=c++ ;;
- *.cc) xform=cc ;;
- *.class) xform=class ;;
- *.cpp) xform=cpp ;;
- *.cxx) xform=cxx ;;
- *.f90) xform=f90 ;;
- *.for) xform=for ;;
- *.java) xform=java ;;
- esac
+ link)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
- libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+Link object files or libraries together to form another library, or to
+create an executable program.
- case $libobj in
- *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
- *)
- $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
- exit 1
- ;;
- esac
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
- # Infer tagged configuration to use if any are available and
- # if one wasn't chosen via the "--tag" command line option.
- # Only attempt this if the compiler in the base compile
- # command doesn't match the default compiler.
- if test -n "$available_tags" && test -z "$tagname"; then
- case $base_compile in
- "$CC "*) ;;
- # Blanks in the command may have been stripped by the calling shell,
- # but not from the CC environment variable when ltconfig was run.
- "`$echo $CC` "*) ;;
- *)
- for z in $available_tags; do
- if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
- # Evaluate the configuration.
- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
- case $base_compile in
- "$CC "*)
- # The compiler in the base compile command matches
- # the one in the tagged configuration.
- # Assume this is the tagged configuration we want.
- tagname=$z
- break
- ;;
- "`$echo $CC` "*)
- tagname=$z
- break
- ;;
- esac
- fi
- done
- # If $tagname still isn't set, then no tagged configuration
- # was found and let the user know that the "--tag" command
- # line option must be used.
- if test -z "$tagname"; then
- echo "$modename: unable to infer tagged configuration"
- echo "$modename: specify a tag with \`--tag'" 1>&2
- exit 1
-# else
-# echo "$modename: using $tagname tagged configuration"
- fi
- ;;
- esac
- fi
+The following components of LINK-COMMAND are treated specially:
- objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$obj"; then
- xdir=
- else
- xdir=$xdir/
- fi
- lobj=${xdir}$objdir/$objname
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
- if test -z "$base_compile"; then
- $echo "$modename: you must specify a compilation command" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+All other options (arguments beginning with \`-') are ignored.
- # Delete any leftover library objects.
- if test "$build_old_libs" = yes; then
- removelist="$obj $lobj $libobj ${libobj}T"
- else
- removelist="$lobj $libobj ${libobj}T"
- fi
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
- $run $rm $removelist
- trap "$run $rm $removelist; exit 1" 1 2 15
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
- # On Cygwin there's no "real" PIC flag so we must build both object types
- case $host_os in
- cygwin* | mingw* | pw32* | os2*)
- pic_mode=default
- ;;
- esac
- if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
- # non-PIC code in shared libraries is not supported
- pic_mode=default
- fi
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
- removelist="$removelist $output_obj $lockfile"
- trap "$run $rm $removelist; exit 1" 1 2 15
- else
- output_obj=
- need_locks=no
- lockfile=
- fi
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
- until $run ln "$0" "$lockfile" 2>/dev/null; do
- $show "Waiting for $lockfile to be removed"
- sleep 2
- done
- elif test "$need_locks" = warn; then
- if test -f "$lockfile"; then
- echo "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
+ uninstall)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
+Remove libraries from an installation directory.
- $run $rm $removelist
- exit 1
- fi
- echo $srcfile > "$lockfile"
- fi
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
- if test -n "$fix_srcfile_path"; then
- eval srcfile=\"$fix_srcfile_path\"
- fi
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
- $run $rm "$libobj" "${libobj}T"
+ *)
+ func_fatal_help "invalid operation mode \`$mode'"
+ ;;
+ esac
- # Create a libtool object file (analogous to a ".la" file),
- # but don't create it if we're doing a dry run.
- test -z "$run" && cat > ${libobj}T <<EOF
-# $libobj - a libtool object file
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
+ $ECHO
+ $ECHO "Try \`$progname --help' for more information about other modes."
-# Name of the PIC object.
-EOF
+ exit $?
+}
- # Only build a PIC object if we are building libtool libraries.
- if test "$build_libtool_libs" = yes; then
- # Without this assignment, base_compile gets emptied.
- fbsd_hideous_sh_bug=$base_compile
+# Generated shell functions inserted here.
- if test "$pic_mode" != no; then
- command="$base_compile $srcfile $pic_flag"
- else
- # Don't build PIC code
- command="$base_compile $srcfile"
- fi
- if test ! -d ${xdir}$objdir; then
- $show "$mkdir ${xdir}$objdir"
- $run $mkdir ${xdir}$objdir
- status=$?
- if test $status -ne 0 && test ! -d ${xdir}$objdir; then
- exit $status
- fi
- fi
+# Parse options once, thoroughly. This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
- if test -z "$output_obj"; then
- # Place PIC objects in $objdir
- command="$command -o $lobj"
- fi
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
- $run $rm "$lobj" "$output_obj"
+ # Parse non-mode specific arguments:
+ while test "$#" -gt 0; do
+ opt="$1"
+ shift
- $show "$command"
- if $run eval "$command"; then :
- else
- test -n "$output_obj" && $run $rm $removelist
- exit 1
- fi
+ case $opt in
+ --config) func_config ;;
+
+ --debug) preserve_args="$preserve_args $opt"
+ func_echo "enabling shell trace mode"
+ opt_debug='set -x'
+ $opt_debug
+ ;;
+
+ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ execute_dlfiles="$execute_dlfiles $1"
+ shift
+ ;;
+
+ --dry-run | -n) opt_dry_run=: ;;
+ --features) func_features ;;
+ --finish) mode="finish" ;;
+
+ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ case $1 in
+ # Valid mode arguments:
+ clean) ;;
+ compile) ;;
+ execute) ;;
+ finish) ;;
+ install) ;;
+ link) ;;
+ relink) ;;
+ uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+
+ mode="$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_duplicate_deps=: ;;
+
+ --quiet|--silent) preserve_args="$preserve_args $opt"
+ opt_silent=:
+ ;;
+
+ --verbose| -v) preserve_args="$preserve_args $opt"
+ opt_silent=false
+ ;;
+
+ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ preserve_args="$preserve_args $opt $1"
+ func_enable_tag "$1" # tagname is set here
+ shift
+ ;;
+
+ # Separate optargs to long options:
+ -dlopen=*|--mode=*|--tag=*)
+ func_opt_split "$opt"
+ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) opt_help=: ;;
+ --version) func_version ;;
+
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+
+ *) nonopt="$opt"
+ break
+ ;;
+ esac
+ done
- if test "$need_locks" = warn &&
- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
- echo "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
+ # Now that we've collected a possible --mode arg, show help if necessary
+ $opt_help && func_mode_help
-but it should contain:
-$srcfile
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+ ;;
+ esac
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
+ # Having warned about all mis-specified options, bail out if
+ # anything was wrong.
+ $exit_cmd $EXIT_FAILURE
+}
- $run $rm $removelist
- exit 1
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
- # Just move the object if needed, then go on to compile the next one
- if test -n "$output_obj" && test "x$output_obj" != "x$lobj"; then
- $show "$mv $output_obj $lobj"
- if $run $mv $output_obj $lobj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
+ exit $EXIT_MISMATCH
+ fi
+}
- # Append the name of the PIC object to the libtool object file.
- test -z "$run" && cat >> ${libobj}T <<EOF
-pic_object='$objdir/$objname'
-EOF
+## ----------- ##
+## Main. ##
+## ----------- ##
- # Allow error messages only from the first compilation.
- suppress_output=' >/dev/null 2>&1'
- else
- # No PIC object so indicate it doesn't exist in the libtool
- # object file.
- test -z "$run" && cat >> ${libobj}T <<EOF
-pic_object=none
+{
+ # Sanity checks first:
+ func_check_version_match
-EOF
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -r "$1" && exec 5<&1 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 1<&5 5<&-
fi
+ test "$lalib_p" = yes
+}
- # Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
- if test "$pic_mode" != yes; then
- # Don't build PIC code
- command="$base_compile $srcfile"
- else
- command="$base_compile $srcfile $pic_flag"
- fi
- if test "$compiler_c_o" = yes; then
- command="$command -o $obj"
- fi
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_lalib_p "$1"
+}
- # Suppress compiler output if we already did a PIC compilation.
- command="$command$suppress_output"
- $run $rm "$obj" "$output_obj"
- $show "$command"
- if $run eval "$command"; then :
- else
- $run $rm $removelist
- exit 1
- fi
- if test "$need_locks" = warn &&
- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
- echo "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
-but it should contain:
-$srcfile
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
- $run $rm $removelist
- exit 1
- fi
- # Just move the object if needed
- if test -n "$output_obj" && test "x$output_obj" != "x$obj"; then
- $show "$mv $output_obj $obj"
- if $run $mv $output_obj $obj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# 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.
+func_win32_libid ()
+{
+ $opt_debug
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ 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 |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
- # Append the name of the non-PIC object the libtool object file.
- # Only append if the libtool object file exists.
- test -z "$run" && cat >> ${libobj}T <<EOF
-# Name of the non-PIC object.
-non_pic_object='$objname'
-EOF
- else
- # Append the name of the non-PIC object the libtool object file.
- # Only append if the libtool object file exists.
- test -z "$run" && cat >> ${libobj}T <<EOF
-# Name of the non-PIC object.
-non_pic_object=none
-EOF
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
fi
+}
+
+
- $run $mv "${libobj}T" "${libobj}"
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
- # Unlock the critical section if it was locked
- if test "$need_locks" != no; then
- $run $rm "$lockfile"
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
fi
- exit 0
- ;;
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
- # libtool link mode
- link | relink)
- modename="$modename: link"
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
- # It is impossible to link a dll without this setting, and
- # we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
- # flag for every libtool invokation.
- # allow_undefined=no
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
- # FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
- # even a static library is built. For now, we need to specify
- # -no-undefined on the libtool link line when we can be certain
- # that all symbols are satisfied, otherwise we get a static library.
- allow_undefined=yes
- ;;
- *)
- allow_undefined=yes
- ;;
- esac
- libtool_args="$nonopt"
- base_compile="$nonopt"
- compile_command="$nonopt"
- finalize_command="$nonopt"
+ # Parse the name list into a source file.
+ func_echo "creating $output_objdir/$my_dlsyms"
- compile_rpath=
- finalize_rpath=
- compile_shlibpath=
- finalize_shlibpath=
- convenience=
- old_convenience=
- deplibs=
- old_deplibs=
- compiler_flags=
- linker_flags=
- dllsearchpath=
- lib_search_path=`pwd`
- inst_prefix_dir=
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
- avoid_version=no
- dlfiles=
- dlprefiles=
- dlself=no
- export_dynamic=no
- export_symbols=
- export_symbols_regex=
- generated=
- libobjs=
- ltlibs=
- module=no
- no_install=no
- objs=
- non_pic_objects=
- prefer_static_libs=no
- preload=no
- prev=
- prevarg=
- release=
- rpath=
- xrpath=
- perm_rpath=
- temp_rpath=
- thread_safe=no
- vinfo=
+#ifdef __cplusplus
+extern \"C\" {
+#endif
- # We need to know -static, to get the right output filenames.
- for arg
- do
- case $arg in
- -all-static | -static)
- if test "X$arg" = "X-all-static"; then
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
- $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_echo "generating symbol list for \`$output'"
+
+ $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`
+ for progfile in $progfiles; do
+ func_echo "extracting global C symbols from \`$progfile'"
+ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
fi
- if test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
fi
- else
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ 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"'
+ case $host in
+ *cygwin* | *mingw* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval '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"'
+ case $host in
+ *cygwin | *mingw* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
fi
fi
- build_libtool_libs=no
- build_old_libs=yes
- prefer_static_libs=yes
- break
- ;;
- esac
- done
- # See if our shared archives depend on static archives.
- test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+ for dlprefile in $dlprefiles; do
+ func_echo "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ done
- # Go through the arguments, transforming them on the way.
- while test $# -gt 0; do
- arg="$1"
- base_compile="$base_compile $arg"
- shift
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
- ;;
- *) qarg=$arg ;;
- esac
- libtool_args="$libtool_args $qarg"
+ $opt_dry_run || {
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- case $prev in
- output)
- compile_command="$compile_command @OUTPUT@"
- finalize_command="$finalize_command @OUTPUT@"
- ;;
- esac
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $MV "$nlist"T "$nlist"
+ fi
- case $prev in
- dlfiles|dlprefiles)
- if test "$preload" = no; then
- # Add the symbol object into the linking commands.
- compile_command="$compile_command @SYMFILE@"
- finalize_command="$finalize_command @SYMFILE@"
- preload=yes
+ # Try sorting and uniquifying the output.
+ if $GREP -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ $GREP -v "^: " < "$nlist" > "$nlist"S
fi
- case $arg in
- *.la | *.lo) ;; # We handle these cases below.
- force)
- if test "$dlself" = no; then
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- self)
- if test "$prev" = dlprefiles; then
- dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
- dlself=yes
- else
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+ else
+ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+"
+ case $host in
+ *cygwin* | *mingw* )
+ $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. */"
+ lt_dlsym_const= ;;
+ *osf5*)
+ echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+ lt_dlsym_const= ;;
*)
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- else
- dlprefiles="$dlprefiles $arg"
- fi
- prev=
- continue
- ;;
+ lt_dlsym_const=const ;;
+ esac
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+$lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
esac
;;
- expsyms)
- export_symbols="$arg"
- if test ! -f "$arg"; then
- $echo "$modename: symbol file \`$arg' does not exist"
- exit 1
- fi
- prev=
- continue
- ;;
- expsyms_regex)
- export_symbols_regex="$arg"
- prev=
- continue
- ;;
- inst_prefix)
- inst_prefix_dir="$arg"
- prev=
- continue
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) symtab_cflags="$symtab_cflags $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* )
+ 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%"`
+ else
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ fi
;;
- release)
- release="-$arg"
- prev=
- continue
+ *)
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
;;
- objectlist)
- if test -f "$arg"; then
- save_arg=$arg
- moreargs=
- for fil in `cat $save_arg`
- do
-# moreargs="$moreargs $fil"
- arg=$fil
- # A libtool-controlled object.
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
- # Check to see that this really is a libtool object.
- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- pic_object=
- non_pic_object=
-
- # Read the .lo file
- # If there is no directory component, then add one.
- case $arg in
- */* | *\\*) . $arg ;;
- *) . ./$arg ;;
- esac
-
- if test -z "$pic_object" || \
- test -z "$non_pic_object" ||
- test "$pic_object" = none && \
- test "$non_pic_object" = none; then
- $echo "$modename: cannot find name of object for \`$arg'" 1>&2
- exit 1
- fi
-
- # Extract subdirectory from the argument.
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$arg"; then
- xdir=
- else
- xdir="$xdir/"
- fi
+ # Nullify the symbol file.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+}
- if test "$pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- dlfiles="$dlfiles $pic_object"
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
-
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- dlprefiles="$dlprefiles $pic_object"
- prev=
- fi
-
- # A PIC object.
- libobjs="$libobjs $pic_object"
- arg="$pic_object"
- fi
-
- # Non-PIC object.
- if test "$non_pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
-
- # A standard non-PIC object
- non_pic_objects="$non_pic_objects $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
- fi
- else
- # If the PIC object exists, use it instead.
- # $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
- non_pic_objects="$non_pic_objects $non_pic_object"
- fi
- else
- # Only an error if not doing a dry-run.
- if test -z "$run"; then
- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
- exit 1
- else
- # Dry-run case.
-
- # Extract subdirectory from the argument.
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$arg"; then
- xdir=
- else
- xdir="$xdir/"
- fi
-
- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
- libobjs="$libobjs $pic_object"
- non_pic_objects="$non_pic_objects $non_pic_object"
- fi
- fi
- done
+# func_extract_an_archive dir oldlib
+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 ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ extracted_serial=`expr $extracted_serial + 1`
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_echo "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename $darwin_archive`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
else
- $echo "$modename: link input file \`$save_arg' does not exist"
- exit 1
- fi
- arg=$save_arg
- prev=
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ mv -f "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
continue
;;
- rpath | xrpath)
- # We need an absolute path.
- case $arg in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- $echo "$modename: only absolute run-paths are allowed" 1>&2
- exit 1
- ;;
- esac
- if test "$prev" = rpath; then
- case "$rpath " in
- *" $arg "*) ;;
- *) rpath="$rpath $arg" ;;
- esac
- else
- case "$xrpath " in
- *" $arg "*) ;;
- *) xrpath="$xrpath $arg" ;;
- esac
- fi
- prev=
+
+ -pie | -fpie | -fPIE)
+ pie_flag="$pie_flag $arg"
continue
;;
- xcompiler)
- compiler_flags="$compiler_flags $qarg"
- prev=
- compile_command="$compile_command $qarg"
- finalize_command="$finalize_command $qarg"
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
continue
;;
- xlinker)
- linker_flags="$linker_flags $qarg"
- compiler_flags="$compiler_flags $wl$qarg"
- prev=
- compile_command="$compile_command $wl$qarg"
- finalize_command="$finalize_command $wl$qarg"
+
+ -no-suppress)
+ suppress_opt=no
continue
;;
- framework)
- case $host in
- *-*-darwin*)
- case "$deplibs " in
- *" $qarg.framework "*) ;;
- *) deplibs="$deplibs $qarg.framework" # this is fixed later
- ;;
- esac
- ;;
- esac
- prev=
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$arg"
+ lastarg="$lastarg $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
continue
;;
+
*)
- eval "$prev=\"\$arg\""
- prev=
- continue
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
;;
- esac
- fi # test -n $prev
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
- prevarg="$arg"
+ # Aesthetically quote the previous argument.
+ func_quote_for_eval "$lastarg"
+ base_compile="$base_compile $func_quote_for_eval_result"
+ done # for arg
- case $arg in
- -all-static)
- if test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
- finalize_command="$finalize_command $link_static_flag"
- fi
- continue
- ;;
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
- -allow-undefined)
- # FIXME: remove this flag sometime in the future.
- $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
- continue
- ;;
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.[fF][09]?) xform='[fF][09].' ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ *.obj) xform=obj ;;
+ esac
- -avoid-version)
- avoid_version=yes
- continue
- ;;
+ libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
- -dlopen)
- prev=dlfiles
- continue
- ;;
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
- -dlpreopen)
- prev=dlprefiles
- continue
- ;;
+ func_infer_tag $base_compile
- -export-dynamic)
- export_dynamic=yes
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
continue
;;
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- $echo "$modename: more than one -exported-symbols argument is not allowed"
- exit 1
- fi
- if test "X$arg" = "X-export-symbols"; then
- prev=expsyms
- else
- prev=expsyms_regex
- fi
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
continue
;;
- -inst-prefix-dir)
- prev=inst_prefix
+ -prefer-pic)
+ pic_mode=yes
continue
;;
- # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
- # so, if we see these flags be careful not to treat them like -L
- -L[A-Z][A-Z]*:*)
- case $with_gcc/$host in
- no/*-*-irix*)
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
- ;;
- esac
+ -prefer-non-pic)
+ pic_mode=no
continue
;;
+ esac
+ done
- -L*)
- dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
- exit 1
- fi
- dir="$absdir"
- ;;
- esac
- case "$deplibs " in
- *" -L$dir "*) ;;
- *)
- deplibs="$deplibs -L$dir"
- lib_search_path="$lib_search_path $dir"
- ;;
- esac
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
- case :$dllsearchpath: in
- *":$dir:"*) ;;
- *) dllsearchpath="$dllsearchpath:$dir";;
- esac
- ;;
- esac
- continue
- ;;
-
- -l*)
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
- case $host in
- *-*-cygwin* | *-*-pw32* | *-*-beos*)
- # These systems don't actually have a C or math library (as such)
- continue
- ;;
- *-*-mingw* | *-*-os2*)
- # These systems don't actually have a C library (as such)
- test "X$arg" = "X-lc" && continue
- ;;
- esac
- fi
- deplibs="$deplibs $arg"
- continue
- ;;
-
- -module)
- module=yes
- continue
- ;;
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_basename "$obj"
+ objname="$func_basename_result"
+ func_dirname "$obj" "/" ""
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
- -no-fast-install)
- fast_install=no
- continue
- ;;
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
- -no-install)
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
- # The PATH hackery in wrapper scripts is required on Windows
- # in order for the loader to find any dlls it needs.
- $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
- $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
- fast_install=no
- ;;
- *) no_install=yes ;;
- esac
- continue
- ;;
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
- -no-undefined)
- allow_undefined=no
- continue
- ;;
+ $opt_dry_run || $RM $removelist
+ trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
- -objectlist)
- prev=objectlist
- continue
- ;;
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
- -o) prev=output ;;
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
- -release)
- prev=release
- continue
- ;;
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
- -rpath)
- prev=rpath
- continue
- ;;
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
- -R)
- prev=xrpath
- continue
- ;;
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ $ECHO "$srcfile" > "$lockfile"
+ fi
- -R*)
- dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- $echo "$modename: only absolute run-paths are allowed" 1>&2
- exit 1
- ;;
- esac
- case "$xrpath " in
- *" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
- esac
- continue
- ;;
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
- -static)
- # The effects of -static are defined in a previous loop.
- # We used to do the same as -all-static on platforms that
- # didn't have a PIC flag, but the assumption that the effects
- # would be equivalent was wrong. It would break on at least
- # Digital Unix and AIX.
- continue
- ;;
+ $opt_dry_run || $RM "$libobj" "${libobj}T"
- -thread-safe)
- thread_safe=yes
- continue
- ;;
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
- -version-info)
- prev=vinfo
- continue
- ;;
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
- -Wc,*)
- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
- arg=
- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- case $flag in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- flag="\"$flag\""
- ;;
- esac
- arg="$arg $wl$flag"
- compiler_flags="$compiler_flags $flag"
- done
- IFS="$save_ifs"
- arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
- ;;
+ func_mkdir_p "$xdir$objdir"
- -Wl,*)
- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
- arg=
- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- case $flag in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- flag="\"$flag\""
- ;;
- esac
- arg="$arg $wl$flag"
- compiler_flags="$compiler_flags $wl$flag"
- linker_flags="$linker_flags $flag"
- done
- IFS="$save_ifs"
- arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
- ;;
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
- -Xcompiler)
- prev=xcompiler
- continue
- ;;
+ $opt_dry_run || $RM "$lobj" "$output_obj"
- -Xlinker)
- prev=xlinker
- continue
- ;;
- -framework)
- prev=framework
- continue
- ;;
+ func_show_eval "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
- # Some other compiler flag.
- -* | +*)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- arg="\"$arg\""
- ;;
- esac
- ;;
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
- *.$objext)
- # A standard object.
- objs="$objs $arg"
- ;;
+but it should contain:
+$srcfile
- *.lo)
- # A libtool-controlled object.
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
- # Check to see that this really is a libtool object.
- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- pic_object=
- non_pic_object=
-
- # Read the .lo file
- # If there is no directory component, then add one.
- case $arg in
- */* | *\\*) . $arg ;;
- *) . ./$arg ;;
- esac
-
- if test -z "$pic_object" || \
- test -z "$non_pic_object" ||
- test "$pic_object" = none && \
- test "$non_pic_object" = none; then
- $echo "$modename: cannot find name of object for \`$arg'" 1>&2
- exit 1
- fi
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
- # Extract subdirectory from the argument.
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$arg"; then
- xdir=
- else
- xdir="$xdir/"
- fi
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
- if test "$pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- dlfiles="$dlfiles $pic_object"
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- dlprefiles="$dlprefiles $pic_object"
- prev=
- fi
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $opt_dry_run || $RM "$obj" "$output_obj"
+ func_show_eval "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
- # A PIC object.
- libobjs="$libobjs $pic_object"
- arg="$pic_object"
- fi
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
- # Non-PIC object.
- if test "$non_pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
+but it should contain:
+$srcfile
- # A standard non-PIC object
- non_pic_objects="$non_pic_objects $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
- fi
- else
- # If the PIC object exists, use it instead.
- # $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
- non_pic_objects="$non_pic_objects $non_pic_object"
- fi
- else
- # Only an error if not doing a dry-run.
- if test -z "$run"; then
- $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
- exit 1
- else
- # Dry-run case.
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
- # Extract subdirectory from the argument.
- xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$arg"; then
- xdir=
- else
- xdir="$xdir/"
- fi
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
- pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
- non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
- libobjs="$libobjs $pic_object"
- non_pic_objects="$non_pic_objects $non_pic_object"
- fi
- fi
- ;;
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
- *.$libext)
- # An archive.
- deplibs="$deplibs $arg"
- old_deplibs="$old_deplibs $arg"
- continue
- ;;
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+ dir=
+ case $file in
*.la)
- # A libtool-controlled library.
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
- if test "$prev" = dlfiles; then
- # This library was specified with -dlopen.
- dlfiles="$dlfiles $arg"
- prev=
- elif test "$prev" = dlprefiles; then
- # The library was specified with -dlpreopen.
- dlprefiles="$dlprefiles $arg"
- prev=
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
else
- deplibs="$deplibs $arg"
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
fi
- continue
;;
- # Some other compiler argument.
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
*)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- arg="\"$arg\""
- ;;
- esac
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ continue
;;
- esac # arg
+ esac
- # Now actually substitute the argument into the commands.
- if test -n "$arg"; then
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
fi
- done # argument parsing loop
+ done
- if test -n "$prev"; then
- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
- # Infer tagged configuration to use if any are available and
- # if one wasn't chosen via the "--tag" command line option.
- # Only attempt this if the compiler in the base link
- # command doesn't match the default compiler.
- if test -n "$available_tags" && test -z "$tagname"; then
- case $base_compile in
- "$CC "*) ;;
- # Blanks in the command may have been stripped by the calling shell,
- # but not from the CC environment variable when ltconfig was run.
- "`$echo $CC` "*) ;;
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
*)
- for z in $available_tags; do
- if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
- # Evaluate the configuration.
- eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
- case $base_compile in
- "$CC "*)
- # The compiler in $compile_command matches
- # the one in the tagged configuration.
- # Assume this is the tagged configuration we want.
- tagname=$z
- break
- ;;
- "`$echo $CC` "*)
- tagname=$z
- break
- ;;
- esac
- fi
- done
- # If $tagname still isn't set, then no tagged configuration
- # was found and let the user know that the "--tag" command
- # line option must be used.
- if test -z "$tagname"; then
- echo "$modename: unable to infer tagged configuration"
- echo "$modename: specify a tag with \`--tag'" 1>&2
- exit 1
-# else
-# echo "$modename: using $tagname tagged configuration"
- fi
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_p "$file"; then
+ func_source "$file"
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
;;
esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_quote_for_eval "$file"
+ args="$args $func_quote_for_eval_result"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ $ECHO "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
fi
+}
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
- eval arg=\"$export_dynamic_flag_spec\"
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
+test "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
fi
- # calculate the name of the file, without its directory
- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
- libobjs_save="$libobjs"
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ $ECHO "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ $ECHO
+ $ECHO "If you ever happen to want to link against installed libraries"
+ $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $ECHO "flag during linking and do at least one of the following:"
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\'\`
- else
- shlib_search_path=
+ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $ECHO " during execution"
fi
- eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+ if test -n "$runpath_var"; then
+ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
+ $ECHO " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
- else
- output_objdir="$output_objdir/$objdir"
+ $ECHO " - use the \`$flag' linker flag"
fi
- # Create the object directory.
- if test ! -d $output_objdir; then
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $output_objdir; then
- exit $status
- fi
+ if test -n "$admincmds"; then
+ $ECHO " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
fi
+ $ECHO
- # Determine the type of output
- case $output in
- "")
- $echo "$modename: you must specify an output file" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
- *.$libext) linkmode=oldlib ;;
- *.lo | *.$objext) linkmode=obj ;;
- *.la) linkmode=lib ;;
- *) linkmode=prog ;; # Anything else should be a program.
+ $ECHO "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ $ECHO "pages."
+ ;;
+ *)
+ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
esac
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+}
- specialdeplibs=
- libs=
- # Find all interdependent deplibs by searching for libraries
- # that are linked more than once (e.g. -la -lb -la)
- for deplib in $deplibs; do
- case "$libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- libs="$libs $deplib"
- done
+test "$mode" = finish && func_mode_finish ${1+"$@"}
- if test $linkmode = lib; then
- libs="$predeps $libs $compiler_lib_search_path $postdeps"
- # Compute libraries that are listed more than once in $predeps
- # $postdeps and mark them as special (i.e., whose duplicates are
- # not to be eliminated).
- pre_post_deps=
- for pre_post_dep in $predeps $postdeps; do
- case "$pre_post_deps " in
- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
- esac
- pre_post_deps="$pre_post_deps $pre_post_dep"
- done
- pre_post_deps=
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
fi
- deplibs=
- newdependency_libs=
- newlib_search_path=
- need_relink=no # whether we're linking any uninstalled libtool libraries
- notinst_deplibs= # not-installed libtool libraries
- notinst_path= # paths that contain not-installed libtool libraries
- case $linkmode in
- lib)
- passes="conv link"
- for file in $dlfiles $dlprefiles; do
- case $file in
- *.la) ;;
- *)
- $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
- exit 1
- ;;
- esac
- done
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog$func_quote_for_eval_result"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
;;
- prog)
- compile_deplibs=
- finalize_deplibs=
- alldeplibs=no
- newdlfiles=
- newdlprefiles=
- passes="conv scan dlopen dlpreopen link"
+ -g | -m | -o)
+ prev=$arg
;;
- *) passes="conv"
+ -s)
+ stripme=" -s"
+ continue
;;
- esac
- for pass in $passes; do
- if test $linkmode = prog; then
- # Determine which files to process
- case $pass in
- dlopen)
- libs="$dlfiles"
- save_deplibs="$deplibs" # Collect dlpreopened libraries
- deplibs=
- ;;
- dlpreopen) libs="$dlprefiles" ;;
- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
- esac
- fi
- for deplib in $libs; do
- lib=
- found=no
- case $deplib in
- -l*)
- if test $linkmode = oldlib && test $linkmode = obj; then
- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
- continue
- fi
- if test $pass = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
- for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
- # Search the libtool library
- lib="$searchdir/lib${name}.la"
- if test -f "$lib"; then
- found=yes
- break
- fi
- done
- if test "$found" != yes; then
- # deplib doesn't seem to be a libtool library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- fi
- ;; # -l
- -L*)
- case $linkmode in
- lib)
- deplibs="$deplib $deplibs"
- test $pass = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- ;;
- prog)
- if test $pass = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- if test $pass = scan; then
- deplibs="$deplib $deplibs"
- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- else
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- ;;
- *)
- $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
- ;;
- esac # linkmode
- continue
- ;; # -L
- -R*)
- if test $pass = link; then
- dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
- # Make sure the xrpath contains only unique directories.
- case "$xrpath " in
- *" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
- esac
- fi
- deplibs="$deplib $deplibs"
- continue
- ;;
- *.la) lib="$deplib" ;;
- *.$libext)
- if test $pass = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- case $linkmode in
- lib)
- if test "$deplibs_check_method" != pass_all; then
- echo
- echo "*** Warning: This library needs some functionality provided by $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."
- else
- echo
- echo "*** Warning: Linking the shared library $output against the"
- echo "*** static library $deplib is not portable!"
- deplibs="$deplib $deplibs"
- fi
- continue
- ;;
- prog)
- if test $pass != link; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- continue
- ;;
- esac # linkmode
- ;; # *.$libext
- *.lo | *.$objext)
- if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlopen support or we're linking statically,
- # we need to preload.
- newdlprefiles="$newdlprefiles $deplib"
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- newdlfiles="$newdlfiles $deplib"
- fi
- continue
- ;;
- %DEPLIBS%)
- alldeplibs=yes
- continue
- ;;
- esac # case $deplib
- if test $found = yes || test -f "$lib"; then :
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
else
- $echo "$modename: cannot find the library \`$lib'" 1>&2
- exit 1
+ dest=$arg
+ continue
fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname "$dest" "" "."
+ destdir="$func_dirname_result"
+ func_basename "$dest"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+ *.la)
# Check to see that this really is a libtool archive.
- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- exit 1
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
fi
- ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
- test "X$ladir" = "X$lib" && ladir="."
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ dir="$dir$objdir"
- dlname=
- dlopen=
- dlpreopen=
- libdir=
- library_names=
- old_library=
- # If the library was installed with an old release of libtool,
- # it will not redefine variable installed.
- installed=yes
+ 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\$%%"`
- # Read the .la file
- case $lib in
- */* | *\\*) . $lib ;;
- *) . ./$lib ;;
- esac
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
- case $host in
- *-*-darwin*)
- # Convert "-framework foo" to "foo.framework" in dependency_libs
- test -n "$dependency_libs" && dependency_libs=`$echo "X$dependency_libs" | $Xsed -e 's/-framework \([^ $]*\)/\1.framework/g'`
- ;;
- esac
+ 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%"`
+ else
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+ fi
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
- { test $linkmode = oldlib && test $linkmode = obj; }; then
- # Add dl[pre]opened files of deplib
- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
fi
- if test $pass = conv; then
- # Only check for convenience libraries
- deplibs="$lib $deplibs"
- if test -z "$libdir"; then
- if test -z "$old_library"; then
- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
- exit 1
- fi
- # It is a libtool convenience library, so add in its objects.
- convenience="$convenience $ladir/$objdir/$old_library"
- old_convenience="$old_convenience $ladir/$objdir/$old_library"
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- tmp_libs="$tmp_libs $deplib"
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
done
- elif test $linkmode != prog && test $linkmode != lib; then
- $echo "$modename: \`$lib' is not a convenience library" 1>&2
- exit 1
fi
- continue
- fi # $pass = conv
- # Get the name of the library we link against.
- linklib=
- for l in $old_library $library_names; do
- linklib="$l"
- done
- if test -z "$linklib"; then
- $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
- exit 1
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
fi
- # This library was specified with -dlopen.
- if test $pass = dlopen; then
- if test -z "$libdir"; then
- $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
- exit 1
- fi
- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlname, no dlopen support or we're linking
- # statically, we need to preload.
- dlprefiles="$dlprefiles $lib"
- else
- newdlfiles="$newdlfiles $lib"
- fi
- continue
- fi # $pass = dlopen
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
- # We need an absolute path.
- case $ladir in
- [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
*)
- abs_ladir=`cd "$ladir" && pwd`
- if test -z "$abs_ladir"; then
- $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
- abs_ladir="$ladir"
- fi
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
;;
esac
- laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
- # Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- $echo "$modename: warning: library \`$lib' was moved." 1>&2
- dir="$ladir"
- absdir="$abs_ladir"
- libdir="$abs_ladir"
- else
- dir="$libdir"
- absdir="$libdir"
- fi
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
else
- dir="$ladir/$objdir"
- absdir="$abs_ladir/$objdir"
- # Remove this search path later
- notinst_path="$notinst_path $abs_ladir"
- fi # $installed = yes
- name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
- # This library was specified with -dlpreopen.
- if test $pass = dlpreopen; then
- if test -z "$libdir"; then
- $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
- exit 1
- fi
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- newdlprefiles="$newdlprefiles $dir/$old_library"
- # Otherwise, use the dlname, so that lt_dlopen finds it.
- elif test -n "$dlname"; then
- newdlprefiles="$newdlprefiles $dir/$dlname"
- else
- newdlprefiles="$newdlprefiles $dir/$linklib"
- fi
- fi # $pass = dlpreopen
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
- if test -z "$libdir"; then
- # Link the convenience library
- if test $linkmode = lib; then
- deplibs="$dir/$old_library $deplibs"
- elif test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$dir/$old_library $compile_deplibs"
- finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e '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
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
else
- deplibs="$lib $deplibs"
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
fi
- continue
fi
- if test $linkmode = prog && test $pass != link; then
- newlib_search_path="$newlib_search_path $ladir"
- deplibs="$lib $deplibs"
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
- linkalldeplibs=no
- if test "$link_all_deplibs" != no || test -z "$library_names" ||
- test "$build_libtool_libs" = no; then
- linkalldeplibs=yes
- fi
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
- tmp_libs=
- for deplib in $dependency_libs; do
- case $deplib in
- -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
- esac
- # Need to link against all dependency_libs?
- if test $linkalldeplibs = yes; then
- deplibs="$deplib $deplibs"
- else
- # Need to hardcode shared library paths
- # or/and link against static libraries
- newdependency_libs="$deplib $newdependency_libs"
- fi
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- tmp_libs="$tmp_libs $deplib"
- done # for deplib
- continue
- fi # $linkmode = prog...
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
- link_static=no # Whether the deplib will be linked statically
- if test -n "$library_names" &&
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
- # Link against this shared library
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
- if test "$linkmode,$pass" = "prog,link" ||
- { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
- # Hardcode the library path.
- # Skip directories that are in the system default run-time
- # search path.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
- esac
- ;;
- esac
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
- esac
- ;;
- esac
- if test $linkmode = prog; then
- # We need to hardcode the library path
- if test -n "$shlibpath_var"; then
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath " in
- *" $dir "*) ;;
- *" $absdir "*) ;;
- *) temp_rpath="$temp_rpath $dir" ;;
- esac
- fi
- fi
- fi # $linkmode,$pass = prog,link...
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $oldlib" 'exit $?'
+ fi
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
- test -n "$library_names"; }; }; then
- # We only need to search for static libraries
- continue
- fi
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
- if test "$installed" = no; then
- notinst_deplibs="$notinst_deplibs $lib"
- need_relink=yes
- fi
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
- if test -n "$old_archive_from_expsyms_cmds"; then
- # figure out the soname
- set dummy $library_names
- realname="$2"
- shift; shift
- libname=`eval \\$echo \"$libname_spec\"`
- # use dlname if we got it. it's perfectly good, no?
- if test -n "$dlname"; then
- soname="$dlname"
- elif test -n "$soname_spec"; then
- # bleh windows
- case $host in
- *cygwin*)
- major=`expr $current - $age`
- versuffix="-$major"
- ;;
- esac
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
- # Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
- soname=`echo $soroot | sed -e 's/^.*\///'`
- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+test "$mode" = install && func_mode_install ${1+"$@"}
- # If the library has no export list, then create one now
- if test -f "$output_objdir/$soname-def"; then :
- else
- $show "extracting exported symbol list from \`$soname'"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- cmds=$extract_expsyms_cmds
- for cmd in $cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- fi
- # Create $newlib
- if test -f "$output_objdir/$newlib"; then :; else
- $show "generating import library for \`$soname'"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- cmds=$old_archive_from_expsyms_cmds
- for cmd in $cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- fi
- # make sure the library variables are pointing to the new library
- dir=$output_objdir
- linklib=$newlib
- fi # test -n $old_archive_from_expsyms_cmds
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
- if test $linkmode = prog || test "$mode" != relink; then
- add_shlibpath=
- add_dir=
- add=
- lib_linked=yes
- case $hardcode_action in
- immediate | unsupported)
- if test "$hardcode_direct" = no; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = no; then
- case $host in
- *-*-sunos*) add_shlibpath="$dir" ;;
- esac
- add_dir="-L$dir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- add_shlibpath="$dir"
- add="-l$name"
- else
- lib_linked=no
- fi
- ;;
- relink)
- if test "$hardcode_direct" = yes; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$dir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case "$libdir" in
- [\\/]*)
- add_dir="$add_dir -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
- add="-l$name"
- else
- lib_linked=no
- fi
- ;;
- *) lib_linked=no ;;
- esac
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
- if test "$lib_linked" != yes; then
- $echo "$modename: configuration error: unsupported hardcode properties"
- exit 1
- fi
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
- if test -n "$add_shlibpath"; then
- case :$compile_shlibpath: in
- *":$add_shlibpath:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
- esac
- fi
- if test $linkmode = prog; then
- test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
- test -n "$add" && compile_deplibs="$add $compile_deplibs"
- else
- test -n "$add_dir" && deplibs="$add_dir $deplibs"
- test -n "$add" && deplibs="$add $deplibs"
- if test "$hardcode_direct" != yes && \
- test "$hardcode_minus_L" != yes && \
- test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
- esac
- fi
- fi
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
- if test $linkmode = prog || test "$mode" = relink; then
- add_shlibpath=
- add_dir=
- add=
- # Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes; then
- add="$libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$libdir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
- esac
- add="-l$name"
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append finalize_command " @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
else
- # We cannot seem to hardcode it, guess we'll fake it.
- add_dir="-L$libdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case "$libdir" in
- [\\/]*)
- add_dir="$add_dir -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
- add="-l$name"
+ dlself=needless
+ export_dynamic=yes
fi
-
- if test $linkmode = prog; then
- test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
- test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
else
- test -n "$add_dir" && deplibs="$add_dir $deplibs"
- test -n "$add" && deplibs="$add $deplibs"
+ dlprefiles="$dlprefiles $arg"
fi
- fi
- elif test $linkmode = prog; then
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
- test -n "$library_names"; }; }; then
- # We only need to search for static libraries
+ prev=
continue
- fi
-
- # Try to link the static library
- # Here we assume that one of hardcode_direct or hardcode_minus_L
- # is not unsupported. This is valid on all known static and
- # shared platforms.
- if test "$hardcode_direct" != unsupported; then
- test -n "$old_library" && linklib="$old_library"
- compile_deplibs="$dir/$linklib $compile_deplibs"
- finalize_deplibs="$dir/$linklib $finalize_deplibs"
- else
- compile_deplibs="-l$name -L$dir $compile_deplibs"
- finalize_deplibs="-l$name -L$dir $finalize_deplibs"
- fi
- elif test "$build_libtool_libs" = yes; then
- # Not a shared library
- if test "$deplibs_check_method" != pass_all; then
- # We're trying link a shared library against a static one
- # but the system doesn't support it.
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
- # Just print a warning and add the library to dependency_libs so
- # that the program can be linked against the static library.
- echo
- echo "*** Warning: This library needs some functionality provided by $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."
- if test "$module" = yes; then
- echo "*** Therefore, libtool will create a static module, that should work "
- echo "*** as long as the dlopening 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."
- fi
- if test "$build_old_libs" = no; then
- build_libtool_libs=module
- build_old_libs=yes
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
else
- build_libtool_libs=no
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
fi
- fi
+ done
else
- convenience="$convenience $dir/$old_library"
- old_convenience="$old_convenience $dir/$old_library"
- deplibs="$dir/$old_library $deplibs"
- link_static=yes
+ func_fatal_error "link input file \`$arg' does not exist"
fi
- fi # link shared/static library?
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ weak_libs="$weak_libs $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
- if test $linkmode = lib; then
- if test -n "$dependency_libs" &&
- { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
- test $link_static = yes; }; then
- # Extract -R from dependency_libs
- temp_deplibs=
- for libdir in $dependency_libs; do
- case $libdir in
- -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
- case " $xrpath " in
- *" $temp_xrpath "*) ;;
- *) xrpath="$xrpath $temp_xrpath";;
- esac;;
- *) temp_deplibs="$temp_deplibs $libdir";;
- esac
- done
- dependency_libs="$temp_deplibs"
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ # The effects of -all-static are defined in a previous loop.
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname '-L' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+ linker_flags="$linker_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
fi
- newlib_search_path="$newlib_search_path $absdir"
- # Link against this library
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
- # ... and its dependency_libs
- tmp_libs=
- for deplib in $dependency_libs; do
- newdependency_libs="$deplib $newdependency_libs"
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- tmp_libs="$tmp_libs $deplib"
- done
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
- if test $link_all_deplibs != no; then
- # Add the search paths of all dependency libraries
- for deplib in $dependency_libs; do
- case $deplib in
- -L*) path="$deplib" ;;
- *.la)
- dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$deplib" && dir="."
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
- absdir="$dir"
- fi
- ;;
- esac
- if grep "^installed=no" $deplib > /dev/null; then
- path="-L$absdir/$objdir"
- else
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- if test -z "$libdir"; then
- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
- exit 1
- fi
- if test "$absdir" != "$libdir"; then
- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
- fi
- path="-L$absdir"
- fi
- ;;
- *) continue ;;
- esac
- case " $deplibs " in
- *" $path "*) ;;
- *) deplibs="$path $deplibs" ;;
- esac
- done
- fi # link_all_deplibs != no
- fi # linkmode = lib
- done # for deplib in $libs
- if test $pass = dlpreopen; then
- # Link the dlpreopened libraries before other libraries
- for deplib in $save_deplibs; do
- deplibs="$deplib $deplibs"
- done
- fi
- if test $pass != dlopen; then
- test $pass != scan && dependency_libs="$newdependency_libs"
- if test $pass != conv; then
- # Make sure lib_search_path contains only unique directories.
- lib_search_path=
- for dir in $newlib_search_path; do
- case "$lib_search_path " in
- *" $dir "*) ;;
- *) lib_search_path="$lib_search_path $dir" ;;
- esac
- done
- newlib_search_path=
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
fi
+ ;;
- if test "$linkmode,$pass" != "prog,link"; then
- vars="deplibs"
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
else
- vars="compile_deplibs finalize_deplibs"
+ deplibs="$deplibs $arg"
fi
- for var in $vars dependency_libs; do
- # Add libraries to $var in reverse order
- eval tmp_libs=\"\$$var\"
- new_libs=
- for deplib in $tmp_libs; do
- case $deplib in
- -L*) new_libs="$deplib $new_libs" ;;
- *)
- case " $specialdeplibs " in
- *" $deplib "*) new_libs="$deplib $new_libs" ;;
- *)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) new_libs="$deplib $new_libs" ;;
- esac
- ;;
- esac
- ;;
- esac
- done
- tmp_libs=
- for deplib in $new_libs; do
- case $deplib in
- -L*)
- case " $tmp_libs " in
- *" $deplib "*) ;;
- *) tmp_libs="$tmp_libs $deplib" ;;
- esac
- ;;
- *) tmp_libs="$tmp_libs $deplib" ;;
- esac
- done
- eval $var=\"$tmp_libs\"
- done # for var
- fi
- if test "$pass" = "conv" &&
- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
- libs="$deplibs" # reset libs
- deplibs=
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
fi
- done # for pass
- if test $linkmode = prog; then
- dlfiles="$newdlfiles"
- dlprefiles="$newdlprefiles"
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ 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\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
fi
- case $linkmode in
- oldlib)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
- fi
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
- if test -n "$rpath"; then
- $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
- fi
+ 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\'\`
+ 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\"
- if test -n "$xrpath"; then
- $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
- fi
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
- fi
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if $opt_duplicate_deps ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
fi
+ libs="$libs $deplib"
+ done
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
fi
+ pre_post_deps=
+ fi
- # Now set the variables for building old libraries.
- build_libtool_libs=no
- oldlibs="$output"
- objs="$objs$old_deplibs"
- ;;
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+ case $linkmode in
lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
- case $outputname in
- lib*)
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
- eval shared_ext=\"$shrext\"
- eval libname=\"$libname_spec\"
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
;;
- *)
- if test "$module" = no; then
- $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
- if test "$need_lib_prefix" != no; then
- # Add the "lib" prefix for modules if required
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
- eval shared_ext=\"$shrext\"
- eval libname=\"$libname_spec\"
- else
- libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
- fi
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
;;
- esac
+ *) passes="conv"
+ ;;
+ esac
- if test -n "$objs"; then
- if test "$deplibs_check_method" != pass_all; then
- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
- exit 1
- else
- echo
- echo "*** Warning: Linking the shared library $output against the non-libtool"
- echo "*** objects $objs is not portable!"
- libobjs="$libobjs $objs"
- fi
+ for pass in $passes; do
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ case $lib in
+ *.la) func_source "$lib" ;;
+ esac
- if test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ # 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"`
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) deplibs="$deplibs $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
fi
-
- set dummy $rpath
- if test $# -gt 2; then
- $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
fi
- install_libdir="$2"
-
- oldlibs=
- if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
- # Building a libtool convenience library.
- # Some compilers have problems with a `.al' extension so
- # convenience libraries should have the same extension an
- # archive normally would.
- oldlibs="$output_objdir/$libname.$libext $oldlibs"
- build_libtool_libs=convenience
- build_old_libs=yes
- fi
-
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
- fi
-
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
- fi
- else
-
- # Parse the version information argument.
- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
- IFS="$save_ifs"
-
- if test -n "$8"; then
- $echo "$modename: too many parameters to \`-version-info'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- current="$2"
- revision="$3"
- age="$4"
- # Check that each of the things are valid numbers.
- case $current in
- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
- *)
- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
- ;;
- esac
-
- case $revision in
- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
- *)
- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
;;
- esac
-
- case $age in
- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
- *)
- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
;;
- esac
-
- if test $age -gt $current; then
- $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
- fi
-
- # Calculate the version variables.
- major=
- versuffix=
- verstring=
- case $version_type in
- none) ;;
-
- darwin)
- # Like Linux, but with the current version available in
- # verstring for coding it into the library header
- major=.`expr $current - $age`
- versuffix="$major.$age.$revision"
- # Darwin ld doesn't like 0 for these options...
- minor_current=`expr $current + 1`
- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ dir=$func_stripname_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
;;
-
- freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ 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 \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $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."
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
;;
-
- freebsd-elf)
- major=".$current"
- versuffix=".$current";
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
;;
+ esac # case $deplib
- irix)
- major=`expr $current - $age + 1`
- verstring="sgi$major.$revision"
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test $loop != 0; do
- iface=`expr $revision - $loop`
- loop=`expr $loop - 1`
- verstring="sgi$major.$iface:$verstring"
- done
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
- # Before this point, $major must not contain `.'.
- major=.$major
- versuffix="$major.$revision"
- ;;
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
- linux)
- major=.`expr $current - $age`
- versuffix="$major.$age.$revision"
- ;;
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
- osf)
- major=.`expr $current - $age`
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
- # Add in all the interfaces that we are compatible with.
- loop=$age
- while test $loop != 0; do
- iface=`expr $current - $loop`
- loop=`expr $loop - 1`
- verstring="$verstring:${iface}.0"
+ # Read the .la file
+ func_source "$lib"
+
+ # 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'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+ esac
done
+ fi
+ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $inherited_linker_flags"
+ fi
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
- # Make executables depend on our current version.
- verstring="$verstring:${current}.0"
- ;;
-
- sunos)
- major=".$current"
- versuffix=".$current.$revision"
- ;;
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ continue
+ fi # $pass = conv
- windows)
- # Use '-' rather than '.', since we only want one
- # extension on DOS 8.3 filesystems.
- major=`expr $current - $age`
- versuffix="-$major"
- ;;
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
*)
- $echo "$modename: unknown library version type \`$version_type'" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
- exit 1
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
;;
esac
+ func_basename "$lib"
+ laname="$func_basename_result"
- # Clear the version info if we defaulted, and they specified a release.
- if test -z "$vinfo" && test -n "$release"; then
- major=
- case $version_type in
- darwin)
- # we can't check for "0.0" in archive_cmds due to quoting
- # problems, so we reset it completely
- verstring=
- ;;
- *)
- verstring="0.0"
- ;;
- esac
- if test "$need_version" = no; then
- versuffix=
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
else
- versuffix=".0.0"
+ dir="$libdir"
+ absdir="$libdir"
fi
- fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
- # Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
- major=
- versuffix=
- verstring=""
- fi
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
- # Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
- $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
- build_libtool_libs=no
- build_old_libs=yes
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
fi
- else
- # Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
+ continue
fi
- fi
- if test "$mode" != relink; then
- # Remove our outputs, but don't remove object files since they
- # may have been created when compiling PIC objects.
- removelist=
- tempremovelist=`echo "$output_objdir/*"`
- for p in $tempremovelist; do
- case $p in
- *.$objext)
- ;;
- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
- removelist="$removelist $p"
- ;;
- *) ;;
- esac
- done
- if test -n "$removelist"; then
- $show "${rm}r $removelist"
- $run ${rm}r $removelist
- fi
- fi
- # Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
- oldlibs="$oldlibs $output_objdir/$libname.$libext"
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
- # Transform .lo files to .o files.
- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
- fi
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
- # Eliminate all temporary directories.
- for path in $notinst_path; do
- lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
- done
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
- if test -n "$xrpath"; then
- # If the user specified any rpath flags, then add them.
- temp_xrpath=
- for libdir in $xrpath; do
- temp_xrpath="$temp_xrpath -R$libdir"
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
- esac
- done
- if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
- dependency_libs="$temp_xrpath $dependency_libs"
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+ *) temp_rpath="$temp_rpath$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
fi
- fi
- # Make sure dlfiles contains only unique files that won't be dlpreopened
- old_dlfiles="$dlfiles"
- dlfiles=
- for lib in $old_dlfiles; do
- case " $dlprefiles $dlfiles " in
- *" $lib "*) ;;
- *) dlfiles="$dlfiles $lib" ;;
- esac
- done
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw*)
+ # No point in relinking DLLs because paths are not encoded
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ $ECHO
+ if test "$linkmode" = prog; then
+ $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $ECHO "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
- # Make sure dlprefiles contains only unique files
- old_dlprefiles="$dlprefiles"
- dlprefiles=
- for lib in $old_dlprefiles; do
- case "$dlprefiles " in
- *" $lib "*) ;;
- *) dlprefiles="$dlprefiles $lib" ;;
- esac
- done
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
- if test "$build_libtool_libs" = yes; then
- if test -n "$rpath"; then
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
- # these systems don't actually have a c library (as such)!
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C library is in the System framework
- deplibs="$deplibs -framework System"
- ;;
- *-*-netbsd*)
- # Don't link with libc until the a.out ld.so is fixed.
- ;;
- *)
- # Add libc to deplibs on all other systems if necessary.
- if test $build_libtool_need_lc = "yes"; then
- deplibs="$deplibs -lc"
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_echo "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
fi
- ;;
- esac
- fi
- # Transform deplibs into only deplibs that can be linked in shared.
- name_save=$name
- libname_save=$libname
- release_save=$release
- versuffix_save=$versuffix
- major_save=$major
- # I'm not sure if I'm treating the release correctly. I think
- # release should show up in the -l (ie -lgmp5) so we don't want to
- # add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
- newdeplibs=
- droppeddeps=no
- case $deplibs_check_method in
- pass_all)
- # Don't check for shared/static. Everything works.
- # This might be a little naive. We might want to check
- # whether the library exists or not. But this is on
- # osf3 & osf4 and I'm not really sure... Just
- # implementing what was already the behaviour.
- newdeplibs=$deplibs
- ;;
- test_compile)
- # This code stresses the "libraries are programs" paradigm to its
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
- $rm conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
-EOF
- $rm conftest
- $LTCC -o conftest conftest.c $deplibs
- if test $? -eq 0 ; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test -n "$name" && test "$name" != "0"; then
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
- deplib_match=$2
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $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."
- fi
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_echo "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ 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"
+ else
+ add="$dir/$old_library"
+ fi
+ elif test -n "$old_library"; then
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
else
- newdeplibs="$newdeplibs $i"
+ lib_linked=no
fi
- done
- else
- # Error occured in the first compile. Let's try to salvage the situation:
- # Compile a seperate program for each library.
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test -n "$name" && test "$name" != "0"; then
- $rm conftest
- $LTCC -o conftest conftest.c $i
- # Did it work?
- if test $? -eq 0 ; then
- ldd_output=`ldd conftest`
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
- deplib_match=$2
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $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."
- fi
- else
- droppeddeps=yes
- 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."
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
else
- newdeplibs="$newdeplibs $i"
- fi
- done
- fi
- ;;
- file_magic*)
- set dummy $deplibs_check_method
- file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
- for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test -n "$name" && test "$name" != "0"; then
- libname=`eval \\$echo \"$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
- # Follow soft links.
- if ls -lLd "$potent_lib" 2>/dev/null \
- | grep " -> " >/dev/null; then
- continue
- fi
- # The statement above tries to avoid entering an
- # endless loop below, in case of cyclic links.
- # We might still enter an endless loop, since a link
- # loop can be closed while we follow links,
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
- case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
- | sed 10q \
- | egrep "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $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."
+ lib_linked=no
fi
- else
- # Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ func_fatal_configuration "unsupported hardcode properties"
fi
- done # Gone through all deplibs.
- ;;
- match_pattern*)
- set dummy $deplibs_check_method
- match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
- for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test -n "$name" && test "$name" != "0"; then
- libname=`eval \\$echo \"$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
- if eval echo \"$potent_lib\" 2>/dev/null \
- | sed 10q \
- | egrep "$match_pattern_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $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."
- fi
- else
- # Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
fi
- done # Gone through all deplibs.
- ;;
- none | unknown | *)
- newdeplibs=""
- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
- grep . >/dev/null; then
- echo
- if test "X$deplibs_check_method" = "Xnone"; then
- echo "*** Warning: inter-library dependencies are not supported in this platform."
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
else
- echo "*** Warning: inter-library dependencies are not known to be supported."
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes &&
+ test "$hardcode_minus_L" != yes &&
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
fi
- echo "*** All declared inter-library dependencies are being dropped."
- droppeddeps=yes
fi
- ;;
- esac
- versuffix=$versuffix_save
- major=$major_save
- release=$release_save
- libname=$libname_save
- name=$name_save
-
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
- # On Rhapsody replace the C library is the System framework
- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
- ;;
- esac
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
- 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."
- 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."
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
else
- build_libtool_libs=no
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
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."
-
- 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."
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $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."
+ 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."
+ 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."
+ fi
if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
build_libtool_libs=module
build_old_libs=yes
else
build_libtool_libs=no
fi
fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
fi
- fi
- # Time to change all our "foo.framework" stuff back to "-framework foo"
- case $host in
- *-*-darwin*)
- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
- dependency_libs=`$echo "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
- ;;
- esac
- # Done checking deplibs!
- # Done checking deplibs!
- deplibs=$newdeplibs
- fi
+ fi # link shared/static library?
- # All the library-specific variables (install_libdir is set above).
- library_names=
- old_library=
- dlname=
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
- if test $hardcode_into_libs = yes; then
- # Hardcode the library paths
- hardcode_libdirs=
- dep_rpath=
- rpath="$finalize_rpath"
- test "$mode" != relink && rpath="$compile_rpath$rpath"
- for libdir in $rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- dep_rpath="$dep_rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
esac
fi
+ tmp_libs="$tmp_libs $deplib"
done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval dep_rpath=\"$hardcode_libdir_flag_spec\"
- fi
- if test -n "$runpath_var" && test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- rpath="$rpath$dir:"
- done
- eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
- fi
- test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
- fi
- shlibpath="$finalize_shlibpath"
- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
- if test -n "$shlibpath"; then
- eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
- fi
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_dirname "$deplib" "" "."
+ dir="$func_dirname_result"
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ eval 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
+ done
+ if test -f "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
+ darwin_install_name=`$ECHO $darwin_install_name`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
+ darwin_install_name=`$ECHO $darwin_install_name`
+ fi
+ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval 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" && \
+ func_warning "\`$deplib' seems to be moved"
- # Get the real and link names of the library.
- eval library_names=\"$library_names_spec\"
- eval shared_ext=\"$shrext\"
- set dummy $library_names
- realname="$2"
- shift; shift
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
- if test -n "$soname_spec"; then
- eval soname=\"$soname_spec\"
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
else
- soname="$realname"
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
fi
- test -z "$dlname" && dlname=$soname
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
- lib="$output_objdir/$realname"
- for link
- do
- linknames="$linknames $link"
- done
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
-# # Ensure that we have .o objects for linkers which dislike .lo
-# # (e.g. aix) in case we are running --disable-static
-# for obj in $libobjs; do
-# xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
-# if test "X$xdir" = "X$obj"; then
-# xdir="."
-# else
-# xdir="$xdir"
-# fi
-# baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
-# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
-# if test ! -f $xdir/$oldobj && test "$baseobj" != "$oldobj"; then
-# $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
-# $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
-# fi
-# done
+ test -n "$deplibs" && \
+ func_warning "\`-l' and \`-L' are ignored for archives"
- # Use standard objects if they are pic
- test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- $show "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
- $run $rm $export_symbols
- eval cmds=\"$export_symbols_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex"; then
- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- $show "$mv \"${export_symbols}T\" \"$export_symbols\""
- $run eval '$mv "${export_symbols}T" "$export_symbols"'
- fi
- fi
- fi
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
- fi
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- else
- gentop="$output_objdir/${outputname}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "$mkdir $gentop"
- $run $mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
- for xlib in $convenience; do
- # Extract the objects.
- case $xlib in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "$mkdir $xdir"
- $run $mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
- libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
- done
- fi
- fi
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
- linker_flags="$linker_flags $flag"
- fi
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
- # Make a backup of the uninstalled library when relinking
- if test "$mode" = relink; then
- $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+ if test "$need_lib_prefix" != no; then
+ # 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\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
fi
+ ;;
+ esac
- # Do each of the archive commands.
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval test_cmds=\"$archive_expsym_cmds\"
- cmds=$archive_expsym_cmds
+ if test -n "$objs"; then
+ 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
- eval test_cmds=\"$archive_cmds\"
- cmds=$archive_cmds
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
fi
- if len=`expr "X$test_cmds" : ".*"` &&
- test $len -le $max_cmd_len; then
- :
- else
- # The command line is too long to link in one step, link piecewise.
-
- # Save the value of $output and $libobjs because we want to
- # use them later. If we have whole_archive_flag_spec, we
- # want to use save_libobjs as it was before
- # whole_archive_flag_spec was expanded, because we can't
- # assume the linker understands whole_archive_flag_spec.
- # This may have to be revisited, in case too many
- # convenience libraries get linked in and end up exceeding
- # the spec.
- if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- fi
- save_output=$output
- output_la=`$echo "X$output" | $Xsed -e "s,^.*/,,"`
+ fi
- # Clear the reloadable object creation command queue and
- # initialize k to one.
- test_cmds=
- concat_cmds=
- objlist=
- delfiles=
- last_robj=
- k=1
-
- if test "$with_gnu_ld" = yes; then
- output=${output_objdir}/${output_la}.lnkscript
- $echo "creating GNU ld script: $output"
- $echo 'INPUT (' > $output
- for obj in $save_libobjs
- do
- $echo \""$obj"\" >> $output
- done
- $echo ')' >> $output
- delfiles="$delfiles $output"
- elif test "X$file_list_spec" != X; then
- output=${output_objdir}/${output_la}.lnk
- $echo "creating linker input file list: $output"
- : > $output
- for obj in $save_libobjs
- do
- $echo "$obj" >> $output
- done
- delfiles="$delfiles $output"
- output=\"$file_list_spec$output\"
- else
- $echo "creating reloadable object files..."
- output=$output_objdir/$save_output-${k}.$objext
- # Loop over the list of objects to be linked.
- for obj in $save_libobjs
- do
- eval test_cmds=\"$reload_cmds $objlist $last_robj\"
- if test "X$objlist" = X ||
- { len=`expr "X$test_cmds" : ".*"` &&
- test $len -le $max_cmd_len; }; then
- objlist="$objlist $obj"
- else
- # The command $test_cmds is almost too long, add a
- # 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\"
- else
- # All subsequent reloadable object files will link in
- # the last one created.
- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
- fi
- last_robj=$output_objdir/$save_output-${k}.$objext
- k=`expr $k + 1`
- output=$output_objdir/$save_output-${k}.$objext
- objlist=$obj
- len=1
- fi
- done
- # Handle the remaining objects by creating one last
- # 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\"
-
- # Set up a command to remove the reloadale object files
- # after they are used.
- i=0
- while test $i -lt $k
- do
- i=`expr $i + 1`
- delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
- done
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
- $echo "creating a temporary reloadable object file: $output"
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
- # Loop through the commands generated above and execute them.
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $concat_cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- fi
+ install_libdir="$1"
- libobjs=$output
- # Restore the value of output.
- output=$save_output
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
- if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- fi
- # Expand the library linking commands again to reset the
- # value of $libobjs for piecewise linking.
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
- # Do each of the archive commands.
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- cmds=$archive_expsym_cmds
- else
- cmds=$archive_cmds
- fi
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
- # Append the command to remove the reloadable object files
- # to the just-reset $cmds.
- eval cmds=\"\$cmds~$rm $delfiles\"
- fi
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
IFS="$save_ifs"
- # Restore the uninstalled library and exit
- if test "$mode" = relink; then
- $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
- exit 0
- fi
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows|none)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ esac
- # Create links to the real library.
- for linkname in $linknames; do
- if test "$realname" != "$linkname"; then
- $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
- fi
- done
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
- # If -module or -export-dynamic was specified, set the dlname.
- if test "$module" = yes || test "$export_dynamic" = yes; then
- # On all known operating systems, these are identical.
- dlname="$soname"
- fi
- fi
- ;;
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
- obj)
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
- fi
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
- fi
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ fi
- if test -n "$rpath"; then
- $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
- fi
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
- if test -n "$xrpath"; then
- $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
- fi
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
- fi
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
- fi
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
- case $output in
- *.lo)
- if test -n "$objs$old_deplibs"; then
- $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
- exit 1
- fi
- libobj="$output"
- obj=`$echo "X$output" | $Xsed -e "$lo2o"`
- ;;
- *)
- libobj=
- obj="$output"
- ;;
- esac
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
- # Delete the old objects.
- $run $rm $obj $libobj
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
- # Objects from convenience libraries. This assumes
- # single-version convenience libraries. Whenever we create
- # different ones for PIC/non-PIC, this we'll have to duplicate
- # the extraction.
- reload_conv_objs=
- gentop=
- # reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec
- wl=
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
- else
- gentop="$output_objdir/${obj}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "$mkdir $gentop"
- $run $mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
- for xlib in $convenience; do
- # Extract the objects.
- case $xlib in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "$mkdir $xdir"
- $run $mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
- reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
done
- fi
- 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
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
- output="$obj"
- eval cmds=\"$reload_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
- # Exit if we aren't doing a library object file.
- if test -z "$libobj"; then
- if test -n "$gentop"; then
- $show "${rm}r $gentop"
- $run ${rm}r $gentop
- fi
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
- exit 0
- fi
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
- if test "$build_libtool_libs" != yes; then
- if test -n "$gentop"; then
- $show "${rm}r $gentop"
- $run ${rm}r $gentop
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
fi
- # Create an invalid libtool object if no PIC, so that we don't
- # accidentally link it into a program.
- # $show "echo timestamp > $libobj"
- # $run eval "echo timestamp > $libobj" || exit $?
- exit 0
- fi
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
- if test -n "$pic_flag" || test "$pic_mode" != default; then
- # Only do commands if we really have different PIC objects.
- reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
- eval cmds=\"$reload_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
-# else
-# # Just create a symlink.
-# $show $rm $libobj
-# $run $rm $libobj
-# xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
-# if test "X$xdir" = "X$libobj"; then
-# xdir="."
-# else
-# xdir="$xdir"
-# fi
-# baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
-# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
-# $show "(cd $xdir && $LN_S $oldobj $baseobj)"
-# $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
- fi
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
- if test -n "$gentop"; then
- $show "${rm}r $gentop"
- $run ${rm}r $gentop
fi
- exit 0
- ;;
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ libobjs="$libobjs $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
- prog)
- case $host in
- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
- esac
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
fi
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
- fi
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
- if test "$preload" = yes; then
- if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
- test "$dlopen_self_static" = unknown; then
- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
- fi
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
fi
- 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 / -framework System /'`
- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
- ;;
- esac
-
- case $host in
- *-*-darwin*)
- # Don't allow lazy linking, it breaks C++ global constructors
- if test "$tagname" = CXX ; then
- compile_command="$compile_command ${wl}-bind_at_load"
- finalize_command="$finalize_command ${wl}-bind_at_load"
- fi
- # Time to change all our "foo.framework" stuff back to "-framework foo"
- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
- ;;
- esac
-
- compile_command="$compile_command $compile_deplibs"
- finalize_command="$finalize_command $finalize_deplibs"
+ # 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"`
+ #done
- if test -n "$rpath$xrpath"; then
+ if test -n "$xrpath"; then
# If the user specified any rpath flags, then add them.
- for libdir in $rpath $xrpath; do
- # This is the magic to use -rpath.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
case "$finalize_rpath " in
*" $libdir "*) ;;
*) finalize_rpath="$finalize_rpath $libdir" ;;
esac
done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
fi
- # Now hardcode the library paths
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$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 "*** 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."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$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 "*** 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."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $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."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$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
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $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"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$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 | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $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"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
+ -e 's/ -lc$//' -e '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,,"`
+ done
+ fi
+ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
+ $GREP . >/dev/null; then
+ $ECHO
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $ECHO "*** Warning: inter-library dependencies are not known to be supported."
fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
+ $ECHO "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
- esac
- fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
- case :$dllsearchpath: in
- *":$libdir:"*) ;;
- *) dllsearchpath="$dllsearchpath:$libdir";;
- esac
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library with the System framework
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
;;
esac
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- compile_rpath="$rpath"
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $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."
+ 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."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
+ build_libtool_libs=no
fi
else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
+ $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."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- finalize_rpath="$rpath"
-
- dlsyms=
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- if test -n "$NM" && test -n "$global_symbol_pipe"; then
- dlsyms="${outputname}S.c"
- else
- $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
fi
+ # 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'`
+ ;;
+ esac
- if test -n "$dlsyms"; then
- case $dlsyms in
- "") ;;
- *.c)
- # Discover the nlist of each of the dlfiles.
- nlist="$output_objdir/${outputname}.nm"
-
- $show "$rm $nlist ${nlist}S ${nlist}T"
- $run $rm "$nlist" "${nlist}S" "${nlist}T"
-
- # Parse the name list into a source file.
- $show "creating $output_objdir/$dlsyms"
-
- test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
-/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
-/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* Prevent the only kind of declaration conflicts we can make. */
-#define lt_preloaded_symbols some_other_symbol
-
-/* External symbol declarations for the compiler. */\
-"
-
- if test "$dlself" = yes; then
- $show "generating symbol list for \`$output'"
-
- test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
-
- # Add our own program objects to the symbol list.
- progfiles="$objs$old_deplibs"
- for arg in $progfiles; do
- $show "extracting global C symbols from \`$arg'"
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -n "$exclude_expsyms"; then
- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
-
- if test -n "$export_symbols_regex"; then
- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$output.exp"
- $run $rm $export_symbols
- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- else
- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
- $run eval 'mv "$nlist"T "$nlist"'
- fi
- fi
-
- for arg in $dlprefiles; do
- $show "extracting global C symbols from \`$arg'"
- name=`echo "$arg" | sed -e 's%^.*/%%'`
- $run eval 'echo ": $name " >> "$nlist"'
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -z "$run"; then
- # Make sure we have at least an empty file.
- test -f "$nlist" || : > "$nlist"
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
- if test -n "$exclude_expsyms"; then
- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
- $mv "$nlist"T "$nlist"
- fi
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
- # Try sorting and uniquifying the output.
- if grep -v "^: " < "$nlist" |
- if sort -k 3 </dev/null >/dev/null 2>&1; then
- sort -k 3
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
else
- sort +2
- fi |
- uniq > "$nlist"S; then
- :
- else
- grep -v "^: " < "$nlist" > "$nlist"S
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
fi
-
- if test -f "$nlist"S; then
- eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ 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\"
else
- echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
- $echo >> "$output_objdir/$dlsyms" "\
-
-#undef lt_preloaded_symbols
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
-}
-lt_preloaded_symbols[] =
-{\
-"
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
- < "$nlist" >> "$output_objdir/$dlsyms"
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
- $echo >> "$output_objdir/$dlsyms" "\
- {0, (lt_ptr_t) 0}
-};
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt_preloaded_symbols;
-}
-#endif
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ delfiles="$delfiles $export_symbols"
+ fi
-#ifdef __cplusplus
-}
-#endif\
-"
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
fi
-
- pic_flag_for_symtable=
- case $host in
- # compiling the symbol table file with pic_flag works around
- # a FreeBSD bug that causes programs to crash when -lm is
- # linked before any other PIC object. But we must not use
- # pic_flag when linking with -static. The problem exists in
- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
- case "$compile_command " in
- *" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
- esac;;
- *-*-hpux*)
- case "$compile_command " in
- *" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag";;
- esac
- esac
-
- # Now compile the dynamic symbol file.
- $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
- $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
-
- # Clean up the generated files.
- $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
- $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
-
- # Transform the symbol file into the correct name.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- ;;
- *)
- $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
- exit 1
;;
esac
- else
- # We keep going just in case the user didn't refer to
- # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
- # 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@%%"`
- fi
-
- if test $need_relink = no || test "$build_libtool_libs" != yes; then
- # Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
- # We have no uninstalled library dependencies, so finalize right now.
- $show "$link_command"
- $run eval "$link_command"
- status=$?
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_echo "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_echo "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
- # Delete the generated files.
- if test -n "$dlsyms"; then
- $show "$rm $output_objdir/${outputname}S.${objext}"
- $run $rm "$output_objdir/${outputname}S.${objext}"
+ 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"'
fi
- exit $status
- fi
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
- if test -n "$shlibpath_var"; then
- # We should set the shlibpath_var
- rpath=
- for dir in $temp_rpath; do
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*)
- # Absolute path.
- rpath="$rpath$dir:"
- ;;
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
*)
- # Relative path: add a thisdir entry.
- rpath="$rpath\$thisdir/$dir:"
+ tmp_deplibs="$tmp_deplibs $test_deplib"
;;
esac
done
- temp_rpath="$rpath"
- fi
+ deplibs="$tmp_deplibs"
- if test -n "$compile_shlibpath$finalize_shlibpath"; then
- compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
- fi
- if test -n "$finalize_shlibpath"; then
- finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
- fi
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
- compile_var=
- finalize_var=
- if test -n "$runpath_var"; then
- if test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- rpath="$rpath$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- if test -n "$finalize_perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
- rpath="$rpath$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
fi
- fi
- if test "$no_install" = yes; then
- # 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'`
- # Delete the old output file.
- $run $rm $output
- # Link the executable and exit
- $show "$link_command"
- $run eval "$link_command" || exit $?
- exit 0
- fi
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
+ # 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 $?
+ fi
- $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
- $echo "$modename: \`$output' will be relinked during installation" 1>&2
- else
- 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'`
+ # 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\"
+ cmds=$module_expsym_cmds
else
- # fast_install is set to needless
- relink_command=
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
fi
else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
fi
- fi
-
- # Replace the output file specification.
- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
- # Delete the old output files.
- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+ if test "X$skipped_export" != "X:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
- $show "$link_command"
- $run eval "$link_command" || exit $?
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
- # Now create the wrapper script.
- $show "creating $output"
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
- # Quote the relink command for shipping.
- if test -n "$relink_command"; then
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
- relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
- elif eval var_value=\$$var; test -z "$var_value"; then
- relink_command="$var=; export $var; $relink_command"
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_echo "creating GNU ld script: $output"
+ $ECHO 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ $ECHO "$obj" >> $output
+ done
+ $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
+ func_echo "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ $ECHO "$obj" >> $output
+ done
+ delfiles="$delfiles $output"
+ output=$firstobj\"$file_list_spec$output\"
else
- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
- relink_command="$var=\"$var_value\"; export $var; $relink_command"
- fi
- done
- relink_command="cd `pwd`; $relink_command"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- fi
+ if test -n "$save_libobjs"; then
+ func_echo "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # 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\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # 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\"
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+ else
+ output=
+ fi
- # Quote $echo for shipping.
- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
- case $0 in
- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
- *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
- esac
- qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
- else
- qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
- fi
+ if ${skipped_export-false}; then
+ func_echo "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ 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\"
+ fi
- # Only actually do things if our run command is non-null.
- if test -z "$run"; then
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
- esac
- # test for cygwin because mv fails w/o .exe extensions
- case $host in
- *cygwin*) exeext=.exe ;;
- *) exeext= ;;
- esac
- $rm $output
- trap "$rm $output; exit 1" 1 2 15
+ test -n "$save_libobjs" &&
+ func_echo "creating a temporary reloadable object file: $output"
- $echo > $output "\
-#! $SHELL
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
-# 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'
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+ if ${skipped_export-false}; then
+ 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"'
+ fi
-relink_command=\"$relink_command\"
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
- # install mode needs the following variable:
- notinst_deplibs='$notinst_deplibs'
-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
- fi\
-"
- $echo >> $output "\
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
- # Find the directory that this script lives in.
- thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
- test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
- # Follow symbolic links until we get to the real thisdir.
- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
- while test -n \"\$file\"; do
- destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+ # 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
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
- # If there was a directory component, then change thisdir.
- if test \"x\$destdir\" != \"x\$file\"; then
- case \"\$destdir\" in
- [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
- *) thisdir=\"\$thisdir/\$destdir\" ;;
- esac
- fi
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
- file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
- done
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
- # Try to get the absolute directory name.
- absdir=\`cd \"\$thisdir\" && pwd\`
- test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
+ func_extract_archives $gentop $dlprefiles
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
- if test "$fast_install" = yes; then
- echo >> $output "\
- program=lt-'$outputname'$exeext
- progdir=\"\$thisdir/$objdir\"
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
- if test ! -f \"\$progdir/\$program\" || \\
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
- file=\"\$\$-\$program\"
+ # 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 $?
- if test ! -d \"\$progdir\"; then
- $mkdir \"\$progdir\"
- else
- $rm \"\$progdir/\$file\"
- fi"
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
- echo >> $output "\
+ exit $EXIT_SUCCESS
+ fi
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
- if relink_command_output=\`eval \$relink_command 2>&1\`; then :
- else
- $echo \"\$relink_command_output\" >&2
- $rm \"\$progdir/\$file\"
- exit 1
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
fi
- fi
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
- { $rm \"\$progdir/\$program\";
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
- $rm \"\$progdir/\$file\"
- fi"
- else
- echo >> $output "\
- program='$outputname'
- progdir=\"\$thisdir/$objdir\"
-"
- fi
+ test -n "$deplibs" && \
+ func_warning "\`-l' and \`-L' are ignored for objects"
- echo >> $output "\
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
- if test -f \"\$progdir/\$program\"; then"
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
- # Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- $echo >> $output "\
- # Add our own library path to $shlibpath_var
- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
- # 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/::*\$//'\`
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
- export $shlibpath_var
-"
- fi
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
- # fixup the dll searchpath if we need to.
- if test -n "$dllsearchpath"; then
- $echo >> $output "\
- # Add the dll search path components to the executable PATH
- PATH=$dllsearchpath:\$PATH
-"
- fi
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
- $echo >> $output "\
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- # Run the actual program with our arguments.
-"
- case $host in
- # win32 systems need to use the prog path for dll
- # lookup to work
- *-*-cygwin* | *-*-pw32*)
- $echo >> $output "\
- exec \$progdir/\$program \${1+\"\$@\"}
-"
- ;;
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
- # Backslashes separate directories on plain windows
- *-*-mingw | *-*-os2*)
- $echo >> $output "\
- exec \$progdir\\\\\$program \${1+\"\$@\"}
-"
- ;;
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
- *)
- $echo >> $output "\
- # Export the path to the program.
- PATH=\"\$progdir:\$PATH\"
- export PATH
+ 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'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
- exec \$program \${1+\"\$@\"}
-"
- ;;
- esac
- $echo >> $output "\
- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
- exit 1
- fi
- else
- # 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
- exit 1
- fi
-fi\
-"
- chmod +x $output
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
fi
- exit 0
- ;;
- esac
- # See if we need to build an old-fashioned archive.
- for oldlib in $oldlibs; do
+ # 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
- if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save"
- addlibs="$convenience"
- build_libtool_libs=no
- else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
- oldobjs="$objs$old_deplibs $non_pic_objects"
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
fi
- addlibs="$old_convenience"
+
+ exit $EXIT_SUCCESS
fi
- if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "$mkdir $gentop"
- $run $mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
fi
- generated="$generated $gentop"
- # Add in members from convenience archives.
- for xlib in $addlibs; do
- # Extract the objects.
- case $xlib in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "$mkdir $xdir"
- $run $mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+ # 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 $?
+ exit $EXIT_SUCCESS
+ fi
- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print | $NL2SP`
- done
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
fi
- # Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
- eval cmds=\"$old_archive_from_new_cmds\"
- else
-# # Ensure that we have .o objects in place in case we decided
-# # not to build a shared library, and have fallen back to building
-# # static libs even though --disable-static was passed!
-# for oldobj in $oldobjs; do
-# if test ! -f $oldobj; then
-# xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
-# if test "X$xdir" = "X$oldobj"; then
-# xdir="."
-# else
-# xdir="$xdir"
-# fi
-# baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
-# obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
-# $show "(cd $xdir && ${LN_S} $obj $baseobj)"
-# $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
-# fi
-# done
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
- # POSIX demands no paths to be encoded in archives. We have
- # to avoid creating archives with duplicate basenames if we
- # might have to extract them afterwards, e.g., when creating a
- # static archive out of a convenience library, or when linking
- # the entirety of a libtool archive into another (currently
- # not supported by libtool).
- if (for obj in $oldobjs
- do
- $echo "X$obj" | $Xsed -e 's%^.*/%%'
- done | sort | sort -uc >/dev/null 2>&1); then
- :
- else
- $echo "copying selected object files to avoid basename conflicts..."
+ exit $EXIT_SUCCESS
+ ;;
- if test -z "$gentop"; then
- gentop="$output_objdir/${outputname}x"
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "$mkdir $gentop"
- $run $mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
- fi
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
- save_oldobjs=$oldobjs
- oldobjs=
- counter=1
- for obj in $save_oldobjs
- do
- objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
- case " $oldobjs " in
- " ") oldobjs=$obj ;;
- *[\ /]"$objbase "*)
- while :; do
- # Make sure we don't pick an alternate name that also
- # overlaps.
- newobj=lt$counter-$objbase
- counter=`expr $counter + 1`
- case " $oldobjs " in
- *[\ /]"$newobj "*) ;;
- *) if test ! -f "$gentop/$newobj"; then break; fi ;;
- esac
- done
- $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
- $run ln "$obj" "$gentop/$newobj" ||
- $run cp "$obj" "$gentop/$newobj"
- oldobjs="$oldobjs $gentop/$newobj"
- ;;
- *) oldobjs="$oldobjs $obj" ;;
- esac
- done
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ 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 /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ ;;
+ 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'`
+ ;;
+ esac
- eval cmds=\"$old_archive_cmds\"
- if len=`expr "X$cmds" : ".*"` &&
- test $len -le $max_cmd_len; then
- :
- else
- # the command line is too long to link in one step, link in parts
- $echo "using piecewise archive linking..."
- save_RANLIB=$RANLIB
- RANLIB=:
- objlist=
- concat_cmds=
- save_oldobjs=$oldobjs
-
- for obj in $save_oldobjs
- do
- oldobjs="$objlist $obj"
- objlist="$objlist $obj"
- eval test_cmds=\"$old_archive_cmds\"
- if len=`expr "X$test_cmds" : ".*"` &&
- test $len -le $max_cmd_len; then
- :
- else
- # the above command should be used before it gets too long
- oldobjs=$objlist
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
- objlist=
- fi
- done
- RANLIB=$save_RANLIB
- oldobjs=$objlist
- eval cmds=\"\$concat_cmds~$old_archive_cmds\"
- fi
- fi
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
done
- IFS="$save_ifs"
- done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
- if test -n "$generated"; then
- $show "${rm}r$generated"
- $run ${rm}r$generated
- fi
- # Now create the libtool archive.
- case $output in
- *.la)
- old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
- $show "creating $output"
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
- relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
- elif eval var_value=\$$var; test -z "$var_value"; then
- relink_command="$var=; export $var; $relink_command"
- else
- var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
- relink_command="$var=\"$var_value\"; export $var; $relink_command"
- fi
- done
- # Quote the link command for shipping.
- tagopts=
- for tag in $taglist; do
- tagopts="$tagopts --tag $tag"
- done
- relink_command="(cd `pwd`; $SHELL $0$tagopts --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
- # Only create the output if not a dry run.
- if test -z "$run"; then
- for installed in no yes; do
- if test "$installed" = yes; then
- if test -z "$install_libdir"; then
- break
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
fi
- output="$output_objdir/$outputname"i
- # Replace all uninstalled libtool libraries with the installed ones
- newdependency_libs=
- for deplib in $dependency_libs; do
- case $deplib in
- *.la)
- name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- if test -z "$libdir"; then
- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
- exit 1
- fi
- newdependency_libs="$newdependency_libs $libdir/$name"
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
;;
- *) newdependency_libs="$newdependency_libs $deplib" ;;
esac
- done
- dependency_libs="$newdependency_libs"
- newdlfiles=
- for lib in $dlfiles; do
- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- if test -z "$libdir"; then
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- exit 1
- fi
- newdlfiles="$newdlfiles $libdir/$name"
- done
- dlfiles="$newdlfiles"
- newdlprefiles=
- for lib in $dlprefiles; do
- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- if test -z "$libdir"; then
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- exit 1
- fi
- newdlprefiles="$newdlprefiles $libdir/$name"
- done
- dlprefiles="$newdlprefiles"
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
fi
- $rm $output
- # place dlname in correct position for cygwin
- tdlname=$dlname
- case $host,$output,$installed,$module,$dlname in
- *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
esac
- $echo > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
-# Names of this library.
-library_names='$library_names'
+ 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`
+ fi
-# The name of the static archive.
-old_library='$old_library'
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
+ wrappers_required=yes
+ case $host in
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
-# Is this an already installed library?
-installed=$installed
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
- if test "$installed" = no && test $need_relink = yes; then
- $echo >> $output "\
-relink_command=\"$relink_command\""
- fi
- done
+ exit $exit_status
fi
- # Do a symbolic link so that the libtool archive can be found in
- # LD_LIBRARY_PATH before the program is installed.
- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
- $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
- ;;
- esac
- exit 0
- ;;
-
- # libtool install mode
- install)
- modename="$modename: install"
-
- # There may be an optional sh(1) argument at the beginning of
- # install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
- # Allow the use of GNU shtool's install command.
- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
- # Aesthetically quote it.
- arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- install_prog="$arg "
- arg="$1"
- shift
- else
- install_prog=
- arg="$nonopt"
- fi
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
- # The real first argument should be the name of the installation program.
- # Aesthetically quote it.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- install_prog="$install_prog$arg"
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
- # We need to accept at least all the BSD install flags.
- dest=
- files=
- opts=
- prev=
- install_type=
- isdir=no
- stripme=
- for arg
- do
- if test -n "$dest"; then
- files="$files $dest"
- dest="$arg"
- continue
+ if test "$no_install" = yes; then
+ # 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'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+ exit $EXIT_SUCCESS
fi
- case $arg in
- -d) isdir=yes ;;
- -f) prev="-f" ;;
- -g) prev="-g" ;;
- -m) prev="-m" ;;
- -o) prev="-o" ;;
- -s)
- stripme=" -s"
- continue
- ;;
- -*) ;;
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
- *)
- # If the previous option needed an argument, then skip it.
- if test -n "$prev"; then
- prev=
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ 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'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
else
- dest="$arg"
- continue
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
fi
- ;;
- esac
-
- # Aesthetically quote the argument.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- install_prog="$install_prog $arg"
- done
+ fi
- if test -z "$install_prog"; then
- $echo "$modename: you must specify an install program" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
- if test -n "$prev"; then
- $echo "$modename: the \`$prev' option requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
- if test -z "$files"; then
- if test -z "$dest"; then
- $echo "$modename: no file or destination specified" 1>&2
- else
- $echo "$modename: you must specify a destination" 1>&2
- fi
- $echo "$help" 1>&2
- exit 1
- fi
+ func_show_eval "$link_command" 'exit $?'
- # Strip any trailing slash from the destination.
- dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+ # Now create the wrapper script.
+ func_echo "creating $output"
- # Check to see that the destination is a directory.
- test -d "$dest" && isdir=yes
- if test "$isdir" = yes; then
- destdir="$dest"
- destname=
- else
- destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
- test "X$destdir" = "X$dest" && destdir=.
- destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
- # Not a directory, so check to see that there is only one file specified.
- set dummy $files
- if test $# -gt 2; then
- $echo "$modename: \`$dest' is not a directory" 1>&2
- $echo "$help" 1>&2
- exit 1
+ # 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"`
fi
- fi
- case $destdir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- for file in $files; do
- case $file in
- *.lo) ;;
- *)
- $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
esac
- done
- ;;
- esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
- # This variable tells wrapper scripts just to set variables rather
- # than running their programs.
- libtool_install_magic="$magic"
+ cat > $cwrappersource <<EOF
- staticlibs=
- future_libdirs=
- current_libdirs=
- for file in $files; do
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
- # Do each installation.
- case $file in
- *.$libext)
- # Do the static libraries later.
- staticlibs="$staticlibs $file"
- ;;
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
- *.la)
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
- library_names=
- old_library=
- relink_command=
- # If there is no directory component, then add one.
- case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
- # Add the libdir to current_libdirs if it is the destination.
- if test "X$destdir" = "X$libdir"; then
- case "$current_libdirs " in
- *" $libdir "*) ;;
- *) current_libdirs="$current_libdirs $libdir" ;;
- esac
- else
- # Note the libdir as a future libdir.
- case "$future_libdirs " in
- *" $libdir "*) ;;
- *) future_libdirs="$future_libdirs $libdir" ;;
- esac
- fi
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
- test "X$dir" = "X$file/" && dir=
- dir="$dir$objdir"
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
- if test -n "$relink_command"; then
- # Determine the prefix the user has applied to our future dir.
- inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
- # Don't allow the user to place us outside of our expected
- # location b/c this prevents finding dependent libraries that
- # are installed to the same prefix.
- # At present, this check doesn't affect windows .dll's that
- # are installed into $libdir/../bin (currently, that works fine)
- # but it's something to keep an eye on.
- if test "$inst_prefix_dir" = "$destdir"; then
- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
- exit 1
- fi
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
- if test -n "$inst_prefix_dir"; then
- # Stick the inst_prefix_dir data into the link command.
- relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
- else
- relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
- fi
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
- $echo "$modename: warning: relinking \`$file'" 1>&2
- $show "$relink_command"
- if $run eval "$relink_command"; then :
- else
- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
- exit 1
- fi
- fi
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
- # See the names of the shared library.
- set dummy $library_names
- if test -n "$2"; then
- realname="$2"
- shift
- shift
+EOF
- srcname="$realname"
- test -n "$relink_command" && srcname="$realname"T
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
- # Install the shared library and build the symlinks.
- $show "$install_prog $dir/$srcname $destdir/$realname"
- $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
- if test -n "$stripme" && test -n "$striplib"; then
- $show "$striplib $destdir/$realname"
- $run eval "$striplib $destdir/$realname" || exit $?
- fi
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
- if test $# -gt 0; then
- # Delete the old symlinks, and create new ones.
- for linkname
- do
- if test "$linkname" != "$realname"; then
- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
- fi
- done
- fi
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- eval cmds=\"$postinstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- fi
+ return p;
+}
- # Install the pseudo-library for information purposes.
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- instname="$dir/$name"i
- $show "$install_prog $instname $destdir/$name"
- $run eval "$install_prog $instname $destdir/$name" || exit $?
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
- # Maybe install the static library, too.
- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
- ;;
+const char *
+base_name (const char *name)
+{
+ const char *base;
- *.lo)
- # Install (i.e. copy) a libtool object.
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+ name += 2;
+#endif
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+char *
+find_executable (const char* wrapper)
+{
+ int has_slash = 0;
+ const char* p;
+ const char* p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char* concat_name;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char* path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char* q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR(*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
else
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- destfile="$destdir/$destfile"
- fi
+ {
+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ return NULL;
+}
- # Deduce the name of the destination old-style object file.
- case $destfile in
- *.lo)
- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
- ;;
- *.$objext)
- staticdest="$destfile"
- destfile=
- ;;
- *)
- $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
- $echo "$help" 1>&2
- exit 1
+char *
+strendzap(char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert(str != NULL);
+ assert(pat != NULL);
+
+ len = strlen(str);
+ patlen = strlen(pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp(str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
;;
esac
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
- # Install the libtool object if requested.
- if test -n "$destfile"; then
- $show "$install_prog $file $destfile"
- $run eval "$install_prog $file $destfile" || exit $?
- fi
+ $ECHO > $output "\
+#! $SHELL
- # Install the old object if enabled.
- if test "$build_old_libs" = yes; then
- # Deduce the name of the old-style object file.
- staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
- $show "$install_prog $staticobj $staticdest"
- $run eval "$install_prog \$staticobj \$staticdest" || exit $?
- fi
- exit 0
- ;;
+# 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'
- *)
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- destfile="$destdir/$destfile"
- fi
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
- # Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- notinst_deplibs=
- relink_command=
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
- # If there is no directory component, then add one.
- case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
+relink_command=\"$relink_command\"
- # Check the variables that should have been set.
- if test -z "$notinst_deplibs"; then
- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
- exit 1
- fi
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ notinst_deplibs='$notinst_deplibs'
+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
+ fi\
+"
+ $ECHO >> $output "\
- finalize=yes
- for lib in $notinst_deplibs; do
- # Check to see that each library is installed.
- libdir=
- if test -f "$lib"; then
- # If there is no directory component, then add one.
- case $lib in
- */* | *\\*) . $lib ;;
- *) . ./$lib ;;
- esac
- fi
- libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
- if test -n "$libdir" && test ! -f "$libfile"; then
- $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
- finalize=no
- fi
- done
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
- relink_command=
- # If there is no directory component, then add one.
- case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
- outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
- if test "$finalize" = yes && test -z "$run"; then
- tmpdir="/tmp"
- test -n "$TMPDIR" && tmpdir="$TMPDIR"
- tmpdir="$tmpdir/libtool-$$"
- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
- else
- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
- continue
- fi
- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- outputname="$tmpdir/$file"
- # Replace the output file specification.
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
- $show "$relink_command"
- if $run eval "$relink_command"; then :
- else
- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
- ${rm}r "$tmpdir"
- continue
- fi
- file="$outputname"
- else
- $echo "$modename: warning: cannot relink \`$file'" 1>&2
- fi
- else
- # Install the binary that we compiled earlier.
- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
- fi
- fi
+ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
- # remove .exe since cygwin /usr/bin/install will append another
- # one anyways
- case $install_prog,$host in
- */usr/bin/install*,*cygwin*)
- case $file:$destfile in
- *.exe:*.exe)
- # this is ok
- ;;
- *.exe:*)
- destfile=$destfile.exe
- ;;
- *:*.exe)
- destfile=`echo $destfile | sed -e 's,.exe$,,'`
- ;;
- esac
- ;;
- esac
+ if test "$fast_install" = yes; then
+ $ECHO >> $output "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
- $show "$install_prog$stripme $file $destfile"
- $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
- test -n "$outputname" && ${rm}r "$tmpdir"
- ;;
- esac
- done
+ if test ! -f \"\$progdir/\$program\" ||
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
- for file in $staticlibs; do
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ file=\"\$\$-\$program\"
- # Set up the ranlib parameters.
- oldlib="$destdir/$name"
+ if test ! -d \"\$progdir\"; then
+ $MKDIR \"\$progdir\"
+ else
+ $RM \"\$progdir/\$file\"
+ fi"
- $show "$install_prog $file $oldlib"
- $run eval "$install_prog \$file \$oldlib" || exit $?
+ $ECHO >> $output "\
- if test -n "$stripme" && test -n "$striplib"; then
- $show "$old_striplib $oldlib"
- $run eval "$old_striplib $oldlib" || exit $?
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+ exit 1
fi
+ fi
- # Do each command in the postinstall commands.
- eval cmds=\"$old_postinstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- done
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
- if test -n "$future_libdirs"; then
- $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
- fi
+ $ECHO >> $output "\
- if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- test -n "$run" && current_libdirs=" -n$current_libdirs"
- exec_cmd='$SHELL $0 --finish$current_libdirs'
- else
- exit 0
- fi
- ;;
+ if test -f \"\$progdir/\$program\"; then"
- # libtool finish mode
- finish)
- modename="$modename: finish"
- libdirs="$nonopt"
- admincmds=
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO >> $output "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- for dir
- do
- libdirs="$libdirs $dir"
- done
+ # 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/::*\$//'\`
- for libdir in $libdirs; do
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
- eval cmds=\"$finish_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || admincmds="$admincmds
- $cmd"
- done
- IFS="$save_ifs"
+ export $shlibpath_var
+"
fi
- if test -n "$finish_eval"; then
- # Do the single finish_eval.
- eval cmds=\"$finish_eval\"
- $run eval "$cmds" || admincmds="$admincmds
- $cmds"
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $ECHO >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
fi
- done
- fi
- # Exit here if they wanted silent mode.
- test "$show" = ":" && exit 0
+ $ECHO >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $ECHO >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
- echo "----------------------------------------------------------------------"
- echo "Libraries have been installed in:"
- for libdir in $libdirs; do
- echo " $libdir"
- done
- echo
- echo "If you ever happen to want to link against installed libraries"
- echo "in a given directory, LIBDIR, you must either use libtool, and"
- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
- echo "flag during linking and do at least one of the following:"
- if test -n "$shlibpath_var"; then
- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
- echo " during execution"
- fi
- if test -n "$runpath_var"; then
- echo " - add LIBDIR to the \`$runpath_var' environment variable"
- echo " during linking"
+ *)
+ $ECHO >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO >> $output "\
+ \$ECHO \"\$0: cannot exec \$program \$*\"
+ exit 1
fi
- if test -n "$hardcode_libdir_flag_spec"; then
- libdir=LIBDIR
- eval flag=\"$hardcode_libdir_flag_spec\"
+ else
+ # 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
+ exit 1
+ fi
+fi\
+"
+ chmod +x $output
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
- echo " - use the \`$flag' linker flag"
- fi
- if test -n "$admincmds"; then
- echo " - have your system administrator run these commands:$admincmds"
- fi
- if test -f /etc/ld.so.conf; then
- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
- fi
- echo
- echo "See any operating system documentation about shared libraries for"
- echo "more information, such as the ld(1) and ld.so(8) manual pages."
- echo "----------------------------------------------------------------------"
- exit 0
- ;;
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
- # libtool execute mode
- execute)
- modename="$modename: execute"
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ oldobjs="$oldobjs $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
- # The first argument is the command name.
- cmd="$nonopt"
- if test -z "$cmd"; then
- $echo "$modename: you must specify a COMMAND" 1>&2
- $echo "$help"
- exit 1
- fi
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
- # Handle -dlopen flags immediately.
- for file in $execute_dlfiles; do
- if test ! -f "$file"; then
- $echo "$modename: \`$file' is not a file" 1>&2
- $echo "$help" 1>&2
- exit 1
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
fi
- dir=
- case $file in
- *.la)
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
- exit 1
+ $ECHO "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
fi
+ eval cmds=\"$old_archive_cmds\"
- # Read the libtool library.
- dlname=
- library_names=
+ if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_echo "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ 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"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ eval 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"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval 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"
+ ;;
+ *) newdlfiles="$newdlfiles $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval 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"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
- # If there is no directory component, then add one.
- case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
+# The name that we can dlopen(3).
+dlname='$tdlname'
- # Skip this library if it cannot be dlopened.
- if test -z "$dlname"; then
- # Warn if it was a shared library.
- test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
- continue
- fi
+# Names of this library.
+library_names='$library_names'
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$file" && dir=.
+# The name of the static archive.
+old_library='$old_library'
- if test -f "$dir/$objdir/$dlname"; then
- dir="$dir/$objdir"
- else
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
- exit 1
- fi
- ;;
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
- *.lo)
- # Just add the directory containing the .lo file.
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$file" && dir=.
- ;;
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
- *)
- $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
- continue
- ;;
- esac
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
- # Get the absolute pathname.
- absdir=`cd "$dir" && pwd`
- test -n "$absdir" && dir="$absdir"
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
- # Now add the directory to shlibpath_var.
- if eval "test -z \"\$$shlibpath_var\""; then
- eval "$shlibpath_var=\"\$dir\""
- else
- eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
- fi
- done
+# Is this an already installed library?
+installed=$installed
- # This variable tells wrapper scripts just to set shlibpath_var
- # rather than running their programs.
- libtool_execute_magic="$magic"
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
- # Check if any of the arguments is a wrapper script.
- args=
- for file
- do
- case $file in
- -*) ;;
- *)
- # Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- # If there is no directory component, then add one.
- case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
- # Transform arg to wrapped name.
- file="$progdir/$program"
- fi
- ;;
- esac
- # Quote arguments (to preserve shell metacharacters).
- file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
- args="$args \"$file\""
- done
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $ECHO >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ }
- if test -z "$run"; then
- if test -n "$shlibpath_var"; then
- # Export the shlibpath_var.
- eval "export $shlibpath_var"
- fi
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
- # Restore saved enviroment variables
- if test "${save_LC_ALL+set}" = set; then
- LC_ALL="$save_LC_ALL"; export LC_ALL
- fi
- if test "${save_LANG+set}" = set; then
- LANG="$save_LANG"; export LANG
- fi
+{ test "$mode" = link || test "$mode" = relink; } &&
+ func_mode_link ${1+"$@"}
- # Now prepare to actually exec the command.
- exec_cmd='"$cmd"$args'
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
- eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
- $echo "export $shlibpath_var"
- fi
- $echo "$cmd$args"
- exit 0
- fi
- ;;
- # libtool clean and uninstall mode
- clean | uninstall)
- modename="$modename: $mode"
- rm="$nonopt"
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ RM="$nonopt"
files=
rmforce=
exit_status=0
for arg
do
case $arg in
- -f) rm="$rm $arg"; rmforce=yes ;;
- -*) rm="$rm $arg" ;;
+ -f) RM="$RM $arg"; rmforce=yes ;;
+ -*) RM="$RM $arg" ;;
*) files="$files $arg" ;;
esac
done
- if test -z "$rm"; then
- $echo "$modename: you must specify an RM program" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
rmdirs=
+ origobjdir="$objdir"
for file in $files; do
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$file"; then
- dir=.
- objdir="$objdir"
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ objdir="$origobjdir"
else
- objdir="$dir/$objdir"
+ objdir="$dir/$origobjdir"
fi
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- test $mode = uninstall && objdir="$dir"
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$mode" = uninstall && objdir="$dir"
# Remember objdir for removal later, being careful to avoid duplicates
- if test $mode = clean; then
+ if test "$mode" = clean; then
case " $rmdirs " in
*" $objdir "*) ;;
*) rmdirs="$rmdirs $objdir" ;;
fi
# Don't error if the file doesn't exist and rm -f was used.
- if (test -L "$file") >/dev/null 2>&1 \
- || (test -h "$file") >/dev/null 2>&1 \
- || test -f "$file"; then
- :
+ if { test -L "$file"; } >/dev/null 2>&1 ||
+ { test -h "$file"; } >/dev/null 2>&1 ||
+ test -f "$file"; then
+ :
elif test -d "$file"; then
- exit_status=1
+ exit_status=1
continue
elif test "$rmforce" = yes; then
- continue
+ continue
fi
rmfiles="$file"
case $name in
*.la)
# Possibly a libtool archive, so verify it.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- . $dir/$name
+ if func_lalib_p "$file"; then
+ func_source $dir/$name
# Delete the libtool libraries and symlinks.
for n in $library_names; do
rmfiles="$rmfiles $objdir/$n"
done
test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
- test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
- if test $mode = uninstall; then
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
if test -n "$library_names"; then
# Do each command in the postuninstall commands.
- eval cmds=\"$postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd"
- if test $? != 0 && test "$rmforce" != yes; then
- exit_status=1
- fi
- done
- IFS="$save_ifs"
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
fi
if test -n "$old_library"; then
# Do each command in the old_postuninstall commands.
- eval cmds=\"$old_postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd"
- if test $? != 0 && test "$rmforce" != yes; then
- exit_status=1
- fi
- done
- IFS="$save_ifs"
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
fi
# FIXME: should reinstall the best remaining shared library.
- fi
+ ;;
+ esac
fi
;;
*.lo)
# Possibly a libtool object, so verify it.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ if func_lalib_p "$file"; then
- # Read the .lo file
- . $dir/$name
+ # Read the .lo file
+ func_source $dir/$name
# Add PIC object to the list of files to remove.
- if test -n "$pic_object" \
- && test "$pic_object" != none; then
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
rmfiles="$rmfiles $dir/$pic_object"
- fi
+ fi
# Add non-PIC object to the list of files to remove.
- if test -n "$non_pic_object" \
- && test "$non_pic_object" != none; then
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
rmfiles="$rmfiles $dir/$non_pic_object"
- fi
+ fi
fi
;;
*)
- # Do a test to see if this is a libtool program.
- if test $mode = clean &&
- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- relink_command=
- . $dir/$file
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ relink_command=
+ func_source $dir/$noexename
- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
- if test "$fast_install" = yes && test -n "$relink_command"; then
- rmfiles="$rmfiles $objdir/lt-$name"
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
fi
fi
;;
esac
- $show "$rm $rmfiles"
- $run $rm $rmfiles || exit_status=1
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
done
+ objdir="$origobjdir"
# Try to remove the ${objdir}s in the directories where we deleted files
for dir in $rmdirs; do
if test -d "$dir"; then
- $show "rmdir $dir"
- $run rmdir $dir >/dev/null 2>&1
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
fi
done
exit $exit_status
- ;;
+}
- "")
- $echo "$modename: you must specify a MODE" 1>&2
- $echo "$generic_help" 1>&2
- exit 1
- ;;
- esac
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
- if test -z "$exec_cmd"; then
- $echo "$modename: invalid operation mode \`$mode'" 1>&2
- $echo "$generic_help" 1>&2
- exit 1
- fi
-fi # test -z "$show_help"
+test -z "$mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$mode'"
if test -n "$exec_cmd"; then
- eval exec $exec_cmd
- exit 1
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
fi
-# We need to display help for each of the modes.
-case $mode in
-"") $echo \
-"Usage: $modename [OPTION]... [MODE-ARG]...
-
-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
- --finish same as \`--mode=finish'
- --help display this help message and exit
- --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
- --quiet same as \`--silent'
- --silent don't print informational messages
- --tag=TAG use configuration variables from tag TAG
- --version print version information
-
-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
-
-MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
-a more detailed description of MODE."
- exit 0
- ;;
-
-clean)
- $echo \
-"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
- ;;
-
-compile)
- $echo \
-"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
- -prefer-pic try to building PIC objects only
- -prefer-non-pic try to building non-PIC objects only
- -static always build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
- ;;
-
-execute)
- $echo \
-"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
- -dlopen FILE add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
- ;;
-
-finish)
- $echo \
-"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges. Use
-the \`--dry-run' option if you just want to see what would be executed."
- ;;
-
-install)
- $echo \
-"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command. The first component should be
-either the \`install' or \`cp' program.
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
- ;;
-
-link)
- $echo \
-"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
- -all-static do not do any dynamic linking at all
- -avoid-version do not add a version suffix if possible
- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
- -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
- -export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
- -export-symbols-regex REGEX
- try to export only the symbols matching REGEX
- -LLIBDIR search LIBDIR for required installed libraries
- -lNAME OUTPUT-FILE requires the installed library libNAME
- -module build a library that can dlopened
- -no-fast-install disable the fast-install mode
- -no-install link a not-installable executable
- -no-undefined declare that a library does not refer to external symbols
- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
- -objectlist FILE Use a list of object files found in FILE to specify objects
- -release RELEASE specify package release information
- -rpath LIBDIR the created library will eventually be installed in LIBDIR
- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
- -static do not do any dynamic linking of libtool libraries
- -version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename. Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
- ;;
-
-uninstall)
- $echo \
-"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
- ;;
-
-*)
- $echo "$modename: invalid operation mode \`$mode'" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
-esac
-
-echo
-$echo "Try \`$modename --help' for more information about other modes."
+exit $exit_status
-exit 0
# The TAGs below are defined such that we never get into a situation
# in which we disable both kinds of libraries. Given conflicting
# If a disable-shared tag is given, we'll fallback to a static-only
# configuration. But we'll never go from static-only to shared-only.
-### BEGIN LIBTOOL TAG CONFIG: disable-shared
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
build_libtool_libs=no
build_old_libs=yes
-### END LIBTOOL TAG CONFIG: disable-shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
-### BEGIN LIBTOOL TAG CONFIG: disable-static
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-### END LIBTOOL TAG CONFIG: disable-static
+# ### END LIBTOOL TAG CONFIG: disable-static
# Local Variables:
# mode:shell-script
# sh-indentation:2
# End:
+# vi:sw=2
+
+
--- /dev/null
+dnl @synopsis AC_PROG_JAVAC
+dnl
+dnl AC_PROG_JAVAC tests an existing Java compiler. It uses the
+dnl environment variable JAVAC then tests in sequence various common
+dnl Java compilers. For political reasons, it starts with the free
+dnl ones.
+dnl
+dnl If you want to force a specific compiler:
+dnl
+dnl - at the configure.in level, set JAVAC=yourcompiler before calling
+dnl AC_PROG_JAVAC
+dnl
+dnl - at the configure level, setenv JAVAC
+dnl
+dnl You can use the JAVAC variable in your Makefile.in, with @JAVAC@.
+dnl
+dnl *Warning*: its success or failure can depend on a proper setting of
+dnl the CLASSPATH env. variable.
+dnl
+dnl TODO: allow to exclude compilers (rationale: most Java programs
+dnl cannot compile with some compilers like guavac).
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java
+dnl programs. It is VERY IMPORTANT that you download the whole set,
+dnl some macros depend on other. Unfortunately, the autoconf archive
+dnl does not support the concept of set of macros, so I had to break it
+dnl for submission. The general documentation, as well as the sample
+dnl configure.in, is included in the AC_PROG_JAVA macro.
+dnl
+dnl @category Java
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version 2000-07-19
+dnl @license GPLWithACException
+dnl
+dnl Modified to remove jikes by Andrew John Hughes on 2008-02-11
+
+AC_DEFUN([AC_PROG_JAVAC],[
+AC_REQUIRE([AC_EXEEXT])dnl
+if test "x$JAVAPREFIX" = x; then
+ test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, ["ecj$EXEEXT -warn:-deprecation,serial,unusedImport"] ["ecj-3.3$EXEEXT -warn:-deprecation,serial,unusedImport"] ["ecj-3.2$EXEEXT -warn:-deprecation,serial,unusedImport"] ["javac$EXEEXT -Xlint:unchecked"] "gcj$EXEEXT -C")
+else
+ test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, ["ecj$EXEEXT -warn:-deprecation,serial,unusedImport"] ["ecj-3.3$EXEEXT -warn:-deprecation,serial,unusedImport"] ["ecj-3.2$EXEEXT -warn:-deprecation,serial,unusedImport"] ["javac$EXEEXT -Xlint:unchecked"] "gcj$EXEEXT -C", $JAVAPREFIX)
+fi
+test "x$JAVAC" = x && AC_MSG_ERROR([no acceptable Java compiler found in \$PATH])
+dnl GCJ LOCAL
+if test "$enable_java_maintainer_mode" = yes; then
+AC_PROG_JAVAC_WORKS
+fi
+dnl END GCJ LOCAL
+AC_PROVIDE([$0])dnl
+])
--- /dev/null
+dnl @synopsis AC_PROG_JAVAC_WORKS
+dnl
+dnl Internal use ONLY.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java
+dnl programs. It is VERY IMPORTANT that you download the whole set,
+dnl some macros depend on other. Unfortunately, the autoconf archive
+dnl does not support the concept of set of macros, so I had to break it
+dnl for submission. The general documentation, as well as the sample
+dnl configure.in, is included in the AC_PROG_JAVA macro.
+dnl
+dnl @category Java
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version 2000-07-19
+dnl @license GPLWithACException
+dnl
+dnl Modified to test for 1.5 by Andrew John Hughes on 2008-02-11
+
+AC_DEFUN([AC_PROG_JAVAC_WORKS],[
+AC_CACHE_CHECK([if $JAVAC works], ac_cv_prog_javac_works, [
+JAVA_TEST=Object.java
+CLASS_TEST=Object.class
+cat << \EOF > $JAVA_TEST
+/* [#]line __oline__ "configure" */
+package java.lang;
+
+public class Object
+{
+ static <T> void doStuff()
+ {
+ }
+}
+EOF
+dnl GCJ LOCAL: don't call JAVAC with $JAVACFLAGS -source 1.5 -target 1.5
+if AC_TRY_COMMAND($JAVAC $JAVA_TEST) >/dev/null 2>&1; then
+ ac_cv_prog_javac_works=yes
+else
+ AC_MSG_ERROR([The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)])
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat $JAVA_TEST >&AC_FD_CC
+fi
+rm -f $JAVA_TEST $CLASS_TEST
+])
+AC_PROVIDE([$0])dnl
+])
dnl Used by aclocal to generate configure
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_FIND_JAVAC],
-[
- user_specified_javac=
-
- CLASSPATH_WITH_GCJ
- CLASSPATH_WITH_JIKES
- CLASSPATH_WITH_KJC
- CLASSPATH_WITH_ECJ
- CLASSPATH_WITH_JAVAC
-
- if test "x${user_specified_javac}" = x; then
- AM_CONDITIONAL(FOUND_GCJ, test "x${GCJ}" != x)
- AM_CONDITIONAL(FOUND_JIKES, test "x${JIKES}" != x)
- AM_CONDITIONAL(FOUND_ECJ, test "x${ECJ}" != x)
- AM_CONDITIONAL(FOUND_JAVAC, test "x${JAVAC}" != x)
- else
- AM_CONDITIONAL(FOUND_GCJ, test "x${user_specified_javac}" = xgcj)
- AM_CONDITIONAL(FOUND_JIKES, test "x${user_specified_javac}" = xjikes)
- AM_CONDITIONAL(FOUND_ECJ, test "x${user_specified_javac}" = xecj)
- AM_CONDITIONAL(FOUND_JAVAC, test "x${user_specified_javac}" = xjavac)
- fi
- AM_CONDITIONAL(FOUND_KJC, test "x${user_specified_javac}" = xkjc)
-
- ## GCJ LOCAL
- if test "x${GCJ}" = x && test "x${JIKES}" = x && test "x${ECJ}" = x \
- && test "x${JAVAC}" = x && test "x${user_specified_javac}" != xkjc
- then
- AC_MSG_ERROR([cannot find javac, try --with-ecj])
- fi
- ## END GCJ LOCAL
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_WITH_GCJ],
-[
- AC_ARG_WITH([gcj],
- [AS_HELP_STRING(--with-gcj,bytecode compilation with gcj)],
- [
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
- CLASSPATH_CHECK_GCJ(${withval})
- else
- if test "x${withval}" != xno; then
- CLASSPATH_CHECK_GCJ
- fi
- fi
- user_specified_javac=gcj
- ],
- [
- CLASSPATH_CHECK_GCJ
- ])
- AC_SUBST(GCJ)
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_CHECK_GCJ],
-[
- if test "x$1" != x; then
- if test -f "$1"; then
- GCJ="$1"
- else
- AC_PATH_PROG(GCJ, "$1")
- fi
- else
- AC_PATH_PROG(GCJ, "gcj")
- fi
- dnl Test the given GCJ, but use it as C (!) compiler to check version
- if test "x$GCJ" != x; then
- AC_MSG_CHECKING([gcj version 4.0])
- AC_LANG_PUSH([C])
- AC_LANG_CONFTEST(
- [[#if __GNUC__ <= 3
- #error GCJ 4.0.0 or higher is required
- #endif
- ]])
- $GCJ -E conftest.c > /dev/null
- gcj_4_result=$?
- if test "x$gcj_4_result" = "x0"; then
- AC_MSG_RESULT([4.0 or higher found])
- else
- AC_MSG_WARN([4.0 or higher required])
- fi
- AC_LANG_POP
- fi
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_WITH_JIKES],
-[
- AC_ARG_WITH([jikes],
- [AS_HELP_STRING(--with-jikes,bytecode compilation with jikes)],
- [
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
- CLASSPATH_CHECK_JIKES(${withval})
- else
- if test "x${withval}" != xno; then
- CLASSPATH_CHECK_JIKES
- fi
- fi
- user_specified_javac=jikes
- ],
- [
- CLASSPATH_CHECK_JIKES
- ])
- AC_SUBST(JIKES)
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_CHECK_JIKES],
-[
- if test "x$1" != x; then
- if test -f "$1"; then
- JIKES="$1"
- else
- AC_PATH_PROG(JIKES, "$1")
- fi
- else
- AC_PATH_PROG(JIKES, "jikes")
- fi
- if test "x$JIKES" != "x"; then
- dnl Require at least version 1.19
- AC_MSG_CHECKING(jikes version)
- JIKES_VERSION=`$JIKES --version | awk '/^Jikes Compiler/' | cut -d ' ' -f 5`
- JIKES_VERSION_MAJOR=`echo "$JIKES_VERSION" | cut -d '.' -f 1`
- JIKES_VERSION_MINOR=`echo "$JIKES_VERSION" | cut -d '.' -f 2`
- if expr "$JIKES_VERSION_MAJOR" = 1 > /dev/null; then
- if expr "$JIKES_VERSION_MINOR" \< 19 > /dev/null; then
- JIKES=""
- fi
- fi
- if test "x$JIKES" != "x"; then
- AC_MSG_RESULT($JIKES_VERSION)
- else
- AC_MSG_WARN($JIKES_VERSION: jikes 1.19 or higher required)
- fi
-
- JIKESENCODING=
- if test -n "`$JIKES --help 2>&1 | grep encoding`"; then
- JIKESENCODING='-encoding UTF-8'
- fi
- AC_SUBST(JIKESENCODING)
-
- JIKESWARNINGS="+Pno-switchcheck"
- if test "x$JIKES_VERSION_MAJOR" = x"1" ; then
- if ! test "x$JIKES_VERSION_MINOR" = x"19"; then
- JIKESWARNINGS="$JIKESWARNINGS +Pno-shadow"
- fi
- fi
- AC_SUBST(JIKESWARNINGS)
-
- fi
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_WITH_KJC],
-[
- AC_ARG_WITH([kjc],
- [AS_HELP_STRING(--with-kjc,bytecode compilation with kjc)],
- [
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
- CLASSPATH_CHECK_KJC(${withval})
- else
- if test "x${withval}" != xno; then
- CLASSPATH_CHECK_KJC
- fi
- fi
- user_specified_javac=kjc
- ],
- [
- CLASSPATH_CHECK_KJC
- ])
- AC_SUBST(KJC)
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_CHECK_KJC],
-[
- if test "x$1" != x; then
- if test -f "$1"; then
- KJC="$1"
- else
- AC_PATH_PROG(KJC, "$1")
- fi
- else
- AC_PATH_PROG(KJC, "kJC")
- fi
-])
-
dnl -----------------------------------------------------------
AC_DEFUN([CLASSPATH_WITH_JAVAH],
[
AC_PATH_PROG(USER_JAVAH, "$1")
fi
else
- AC_PATH_PROGS([USER_JAVAH],[gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah])
+ AC_PATH_PROGS([USER_JAVAH],[gjavah gjavah-4.3 gjavah-4.2 gjavah-4.1 gcjh-wrapper-4.1 gcjh-4.1 javah])
fi
if test "x${USER_JAVAH}" = x; then
dnl -----------------------------------------------------------
AC_DEFUN([CLASSPATH_WITH_CLASSLIB],
[
- AC_ARG_WITH([classpath],
- [AS_HELP_STRING(--with-classpath,specify path to a classes.zip like file)],
- [
- if test "x${withval}" = xyes; then
- # set user classpath to CLASSPATH from env
- AC_MSG_CHECKING(for classlib)
- USER_CLASSLIB=${CLASSPATH}
- AC_SUBST(USER_CLASSLIB)
- AC_MSG_RESULT(${USER_CLASSLIB})
- conditional_with_classlib=true
- elif test "x${withval}" != x && test "x${withval}" != xno; then
- # set user classpath to specified value
- AC_MSG_CHECKING(for classlib)
- USER_CLASSLIB=${withval}
- AC_SUBST(USER_CLASSLIB)
- AC_MSG_RESULT(${withval})
- conditional_with_classlib=true
- fi
- ],
- [ conditional_with_classlib=false ])
- AM_CONDITIONAL(USER_SPECIFIED_CLASSLIB, test "x${conditional_with_classlib}" = xtrue)
-
AC_ARG_WITH([vm-classes],
[AS_HELP_STRING(--with-vm-classes,specify path to VM override source files)], [vm_classes="$with_vm_classes"],
[vm_classes='${top_srcdir}/vm/reference'])
FASTJAR=${withval}
AC_MSG_RESULT([${FASTJAR}])
],
- [AC_PATH_PROG(FASTJAR, fastjar)])
+ [AC_PATH_PROGS([FASTJAR], [fastjar gjar jar])])
dnl We disable ZIP by default if we find fastjar.
if test x"${FASTJAR}" != x; then
ZIP=""
EXAMPLESDIR=""
fi
AC_SUBST(EXAMPLESDIR)
+
+ AC_ARG_ENABLE([tools],
+ [AS_HELP_STRING(--enable-tools,enable build of the tools [default=yes])],
+ [case "${enableval}" in
+ yes) TOOLSDIR="tools" ;;
+ no) TOOLSDIR="" ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
+ esac],
+ [TOOLSDIR="tools"])
+ if test "x${use_zip}" = xno && test "x${install_class_files}" = xno; then
+ TOOLSDIR=""
+ fi
+ AC_SUBST(TOOLSDIR)
])
dnl -----------------------------------------------------------
AC_DEFUN([REGEN_WITH_JAY],
[
AC_ARG_WITH([jay],
- [AS_HELP_STRING(--with-jay,Regenerate the parsers with jay must be given the path to the jay executable)],
+ [AS_HELP_STRING(--with-jay[=DIR|PATH],Regenerate the parsers with jay)],
[
- if test -d "${withval}"; then
+ AC_MSG_CHECKING([whether to regenerate parsers with jay])
+ JAY_FOUND=no
+ JAY_DIR_PATH=
+ if test "x${withval}" = xno; then
+ AC_MSG_RESULT(no)
+ elif test "x${withval}" = xyes; then
+ AC_MSG_RESULT(yes)
+ JAY_DIR_PATH="/usr/share/jay"
+ elif test -d "${withval}"; then
+ AC_MSG_RESULT(yes)
JAY_DIR_PATH="${withval}"
- AC_PATH_PROG(JAY, jay, "no", ${JAY_DIR_PATH})
- if test "x${JAY}" = xno; then
- AC_MSG_ERROR("jay executable not found");
- fi
- else
+ elif test -f "${withval}"; then
+ AC_MSG_RESULT(yes)
JAY_DIR_PATH=`dirname "${withval}"`
JAY="${withval}"
- AC_SUBST(JAY)
+ else
+ AC_MSG_ERROR(jay not found at ${withval})
fi
- JAY_SKELETON="${JAY_DIR_PATH}/skeleton"
- AC_CHECK_FILE(${JAY_SKELETON}, AC_SUBST(JAY_SKELETON),
- AC_MSG_ERROR("Expected skeleton file in `dirname ${withval}`"))
- JAY_FOUND=yes
- ],
- [
- JAY_FOUND=no
- ])
- AM_CONDITIONAL(REGEN_PARSERS, test "x${JAY_FOUND}" = xyes)
-])
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_WITH_ECJ],
-[
- AC_ARG_WITH([ecj],
- [AS_HELP_STRING(--with-ecj,bytecode compilation with ecj)],
- [
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
- CLASSPATH_CHECK_ECJ(${withval})
- else
- if test "x${withval}" != xno; then
- CLASSPATH_CHECK_ECJ
+ if test "x${JAY_DIR_PATH}" != x; then
+ AC_PATH_PROG(JAY, jay, "no", ${JAY_DIR_PATH}:${PATH})
+ if test "x${JAY}" = xno; then
+ AC_MSG_ERROR(jay executable not found);
fi
+ JAY_SKELETON="${JAY_DIR_PATH}/skeleton"
+ AC_CHECK_FILE(${JAY_SKELETON}, AC_SUBST(JAY_SKELETON),
+ AC_MSG_ERROR(Expected skeleton file in ${JAY_DIR_PATH}))
+ JAY_FOUND=yes
fi
- user_specified_javac=ecj
],
- [
- CLASSPATH_CHECK_ECJ
+ [
+ AC_MSG_CHECKING([whether to regenerate parsers with jay])
+ AC_MSG_RESULT(no)
+ JAY_FOUND=no
])
- AC_SUBST(ECJ)
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_CHECK_ECJ],
-[
- if test "x$1" != x; then
- if test -f "$1"; then
- ECJ="$1"
- else
- AC_PATH_PROG(ECJ, "$1")
- fi
- else
- AC_PATH_PROG(ECJ, "ecj")
- fi
+ AM_CONDITIONAL(REGEN_PARSERS, test "x${JAY_FOUND}" = xyes)
])
dnl -----------------------------------------------------------
])
dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_WITH_JAVAC],
-[
- AC_ARG_WITH([javac],
- [AS_HELP_STRING(--with-javac,bytecode compilation with javac)],
- [
- if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
- CLASSPATH_CHECK_JAVAC(${withval})
- else
- if test "x${withval}" != xno; then
- CLASSPATH_CHECK_JAVAC
- fi
- fi
- user_specified_javac=javac
- ],
- [
- CLASSPATH_CHECK_JAVAC
- ])
- AC_SUBST(JAVAC)
-])
-
-dnl -----------------------------------------------------------
-AC_DEFUN([CLASSPATH_CHECK_JAVAC],
-[
- if test "x$1" != x; then
- JAVAC="$1"
+AC_DEFUN([CLASSPATH_JAVAC_MEM_CHECK],
+[
+ JAVA_TEST=Test.java
+ CLASS_TEST=Test.class
+ cat << \EOF > $JAVA_TEST
+ /* [#]line __oline__ "configure" */
+ public class Test
+ {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello World");
+ }
+ }
+EOF
+ AC_MSG_CHECKING([whether javac supports -J])
+ $JAVAC $JAVACFLAGS -J-Xmx768M -sourcepath '' $JAVA_TEST
+ javac_result=$?
+ if test "x$javac_result" = "x0"; then
+ AC_MSG_RESULT([yes])
+ JAVAC_MEM_OPT="-J-Xmx768M"
else
- AC_PATH_PROG(JAVAC, "javac")
+ AC_MSG_RESULT([no])
fi
+ rm -f $JAVA_TEST $CLASS_TEST
+ AC_SUBST(JAVAC_MEM_OPT)
])
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2005-06-08.21
+scriptversion=2006-05-10.23
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
fi
run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
msg="missing on your system"
-case "$1" in
+case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
-case "$1" in
+case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case "$1" in
+case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
- case "$f" in
+ case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
+ if test $# -ne 1; then
eval LASTARG="\${$#}"
- case "$LASTARG" in
+ case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
- if [ ! -f y.tab.h ]; then
+ if test ! -f y.tab.h; then
echo >y.tab.h
fi
- if [ ! -f y.tab.c ]; then
+ if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
- if [ $# -ne 1 ]; then
+ if test $# -ne 1; then
eval LASTARG="\${$#}"
- case "$LASTARG" in
+ case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
+ if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
- if [ ! -f lex.yy.c ]; then
+ if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
fi
firstarg="$1"
if shift; then
- case "$firstarg" in
+ case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
- case "$firstarg" in
+ case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
dmg@research.att.com or research!dmg
*/
-#include "mprec.h"
#include <string.h>
#include <stdlib.h>
+#include "mprec.h"
+#include <stdlib.h>
static int
_DEFUN (quorem,
#ifndef __CLASSPATH_FDLIBM_H__
#define __CLASSPATH_FDLIBM_H__
-/* AIX needs _XOPEN_SOURCE */
+/*
+ * On AIX we need _ALL_SOURCE defined to compile/configure native-lib, but can't
+ * have it defined to compile fdlibm. UGH.
+ */
#ifdef _AIX
-#define _XOPEN_SOURCE
+#undef _ALL_SOURCE
#endif
#include <config.h>
#define __IEEE_LITTLE_ENDIAN
#endif
+#ifdef __AVR32__
+#define __IEEE_BIG_ENDIAN
+#endif
+
#ifdef __MIPSEL__
#define __IEEE_LITTLE_ENDIAN
#endif
#define _SIGNED signed
#define _DOTS , ...
#define _VOID void
+#ifndef _EXFUN
#define _EXFUN(name, proto) name proto
+#endif /* !EXFUN */
#define _DEFUN(name, arglist, args) name(args)
#define _DEFUN_VOID(name) name(_NOARGS)
#define _CAST_VOID (void)
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
midi-dssi native-lib
all-local:
- cd $(top_srcdir) && $(SHELL) ./scripts/check_jni_methods.sh
+ $(SHELL) $(top_builddir)/scripts/check_jni_methods.sh
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
all-local:
- cd $(top_srcdir) && $(SHELL) ./scripts/check_jni_methods.sh
+ $(SHELL) $(top_builddir)/scripts/check_jni_methods.sh
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
+++ /dev/null
-/* GStreamerIOPeer.c -- Implements native methods for class GStreamerNativePeer
- Copyright (C) 2007 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. */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <jni.h>
-
-#include <glib.h>
-#include <glib/gprintf.h>
-
-#include <gdk/gdk.h>
-
-#include <gst/gst.h>
-
-#include "jcl.h"
-
-#include "gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h"
-
-#include "gstclasspathsrc.h"
-#include "gstinputstream.h"
-
-#define _GST_MALLOC_SIZE_ 256
-
-typedef struct _AudioProperties AudioProperties;
-struct _AudioProperties
-{
- /*
- * NOTE: descriptions of the properties are taken from:
- * http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/section-types-definitions.html#table-audio-types
- */
-
- /* decoder name */
- const char *name;
-
- /* audio endiannes */
- const char *endianness;
-
- /* header size */
- const char *header_size;
-
- /* mime */
- const char *mimetype;
-
- /* The sample rate of the data, in samples (per channel) per second */
- const char *samplerate;
-
- /* The number of channels of audio data */
- const char *channels;
-
- const char *layer;
-
- const char *bitrate;
-
- const char *framed;
-
- /*
- * Defines if the values of the integer samples are signed or not.
- * Signed samples use one bit to indicate sign (negative or positive)
- * of the value. Unsigned samples are always positive.
- */
- const char *signess;
-
- /* */
- const char *rate;
-
- /* Number of bits allocated per sample. */
- const char *width;
-
- /*
- * The number of bits used per sample.
- * If the depth is less than the width, the low bits are assumed to be the
- * ones used. For example, a width of 32 and a depth of 24 means that
- * each sample is stored in a 32 bit word, but only the low
- * 24 bits are actually used.
- */
- const char *depth;
-
- /*
- * This is set in the case of the mpeg files.
- */
- const char *type;
-
- gboolean done;
-
-};
-
-/* ***** PRIVATE FUNCTIONS DECLARATION ***** */
-
-static gboolean
-set_strings (JNIEnv *env, const jclass GstHeader,
- const AudioProperties *properties, jobject header);
-
-static gboolean
-typefind_callback(GstElement *typefind, guint probability, const GstCaps *caps,
- gpointer data);
-
-static void
-element_added (GstBin *bin, GstElement *element, gpointer data);
-
-static void
-new_decoded_pad (GstElement *decoder, GstPad *pad,
- gboolean last, GstElement *pipeline);
-
-static gboolean
-fill_info (GstElement *decoder, AudioProperties *properties);
-
-static gchar *
-get_string_property (const GstStructure *structure, const gchar *property);
-
-static gchar *
-get_boolean_property (const GstStructure *structure, const gchar *property);
-
-static gboolean
-set_string (JNIEnv *env, const jclass GstHeader, jobject header,
- const char *field, const gchar *property);
-
-static void
-free_properties (AudioProperties *properties);
-
-static void
-reset_properties (AudioProperties *properties);
-
-/* ***** END: PRIVATE FUNCTIONS DECLARATION ***** */
-
-/* ***** NATIVE FUNCTIONS ***** */
-
-JNIEXPORT jboolean JNICALL
-Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1stream
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject header __attribute__ ((unused)),
- jobject jstream __attribute__ ((unused)))
-{
- GstInputStream *istream = NULL;
- JavaVM *vm = NULL;
- jclass GstHeader = NULL;
-
- GstElement *pipeline = NULL;
-
- GstElement *typefind = NULL;
- GstElement *decodebin = NULL;
- GstElement *source = NULL;
-
- AudioProperties *properties = NULL;
-
- jboolean result = JNI_FALSE;
-
- GstHeader = (*env)->GetObjectClass(env, header);
-
- gst_init (NULL, NULL);
-
- properties = (AudioProperties *) g_malloc0 (sizeof (AudioProperties));
- if (properties == NULL)
- {
- g_warning ("unable to allocate memory for properties");
- return JNI_FALSE;
- }
-
- /* create the GstInputStream object */
- istream = g_object_new (GST_TYPE_INPUT_STREAM, NULL);
- if (istream == NULL)
- {
- free_properties (properties);
-
- g_warning ("unable to create an istream");
- return JNI_FALSE;
- }
-
- source = gst_element_factory_make ("classpathsrc", "source");
- if (source == NULL)
- {
- free_properties (properties);
- g_free ((gpointer) istream);
-
- g_warning ("unable to create a source");
- return JNI_FALSE;
- }
-
- /* store the vm and the input stream in the gstinputstream class */
- (*env)->GetJavaVM(env, &vm);
- g_object_set (G_OBJECT (istream), GST_ISTREAM_JVM, vm,
- GST_ISTREAM_READER, jstream,
- NULL);
- g_object_set (G_OBJECT (source), GST_CLASSPATH_SRC_ISTREAM, istream, NULL);
-
- pipeline = gst_pipeline_new ("pipe");
- if (pipeline == NULL)
- {
- gst_object_unref (GST_OBJECT (source));
- g_free ((gpointer) istream);
- free_properties (properties);
-
- g_warning ("unable to create the pipeline");
- return JNI_FALSE;
- }
-
- decodebin = gst_element_factory_make ("decodebin", "decodebin");
- if (decodebin == NULL)
- {
- gst_object_unref (GST_OBJECT (source));
-
- g_free ((gpointer) istream);
- free_properties(properties);
-
- gst_object_unref(GST_OBJECT(pipeline));
-
- g_warning ("unable to create decodebin");
- return JNI_FALSE;
- }
-
- g_signal_connect (decodebin, "new-decoded-pad", G_CALLBACK (new_decoded_pad),
- pipeline);
-
- gst_bin_add_many (GST_BIN (pipeline), source, decodebin, NULL);
- gst_element_link (source, decodebin);
-
- typefind = gst_bin_get_by_name (GST_BIN (decodebin), "typefind");
- if (typefind == NULL)
- {
- g_free ((gpointer) istream);
- free_properties(properties);
-
- gst_object_unref(GST_OBJECT(pipeline));
-
- g_warning ("unable to create decodebin");
- return JNI_FALSE;
- }
-
- g_signal_connect (G_OBJECT (typefind), "have-type",
- G_CALLBACK (typefind_callback), properties);
-
- gst_element_set_state (GST_ELEMENT(pipeline), GST_STATE_PLAYING);
- if (gst_element_get_state (pipeline, NULL, NULL, 100000) ==
- GST_STATE_CHANGE_FAILURE)
- {
- g_free ((gpointer) istream);
- free_properties(properties);
- gst_object_unref(GST_OBJECT(pipeline));
-
- g_warning ("Failed to go into PLAYING state");
- return JNI_FALSE;
- }
-
- result = JNI_FALSE;
- if (fill_info (decodebin, properties))
- {
- result = set_strings (env, GstHeader, properties, header);
- }
-
- gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
-
- gst_object_unref (GST_OBJECT(pipeline));
- free_properties (properties);
-
- return result;
-}
-
-JNIEXPORT jboolean JNICALL
-Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1file
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject header)
-{
- /* will contain the properties we need to put into the given GstHeader */
- AudioProperties *properties = NULL;
-
- /* source file */
- const char *file = NULL;
-
- /* GStreamer elements */
- GstElement *pipeline = NULL;
- GstElement *source = NULL;
- GstElement *decoder = NULL;
-
- GstElement *typefind = NULL;
-
- GstStateChangeReturn res;
-
- jboolean result = JNI_FALSE;
-
- /* java fields */
- jfieldID _fid = NULL;
- jclass GstHeader = NULL;
- jstring _file = NULL;
-
- GstHeader = (*env)->GetObjectClass(env, header);
- _fid = (*env)->GetFieldID(env, GstHeader, "file", "Ljava/lang/String;");
- if (_fid == NULL)
- {
- return JNI_FALSE; /* failed to find the field */
- }
-
- _file = (*env)->GetObjectField(env, header, _fid);
- file = JCL_jstring_to_cstring (env, _file);
- if (file == NULL)
- {
- return JNI_FALSE;
- }
-
- gst_init (NULL, NULL);
-
- properties = (AudioProperties *) g_malloc0 (sizeof (AudioProperties));
- if (properties == NULL)
- {
- free_properties (properties);
- JCL_free_cstring (env, _file, file);
- return JNI_FALSE;
- }
-
- /* this is not really needed */
- reset_properties(properties);
-
- /* create the source element, will be used to read the file */
- source = gst_element_factory_make ("filesrc", "source");
- if (source == NULL)
- {
- free_properties (properties);
- JCL_free_cstring (env, _file, file);
- return JNI_FALSE;
- }
-
- /* set the file name */
- g_object_set (G_OBJECT (source), "location", file, NULL);
-
- /*
- * create the decoder element, this will decode the stream and retrieve
- * its properties.
- * We connect a signal to this element, to be informed when it is done
- * in decoding the stream and to get the needed informations about the
- * audio file.
- */
- decoder = gst_element_factory_make ("decodebin", "decoder");
- if (decoder == NULL)
- {
- gst_object_unref (GST_OBJECT (source));
- free_properties(properties);
-
- JCL_free_cstring (env, _file, file);
- return JNI_FALSE;
- }
-
- g_signal_connect (decoder, "new-decoded-pad", G_CALLBACK (new_decoded_pad),
- pipeline);
- g_signal_connect (G_OBJECT (decoder), "element-added",
- G_CALLBACK (element_added), properties);
-
- /* now, we create a pipeline and fill it with the other elements */
- pipeline = gst_pipeline_new ("pipeline");
- if (pipeline == NULL)
- {
- gst_object_unref (GST_OBJECT (source));
- gst_object_unref (GST_OBJECT (decoder));
-
- free_properties(properties);
-
- JCL_free_cstring (env, _file, file);
- return JNI_FALSE;
- }
-
- /*
- * we get the typefind from the decodebin to catch the additional properties
- * that the decodebin does not expose to us
- */
- typefind = gst_bin_get_by_name (GST_BIN (decoder), "typefind");
- if (typefind != NULL)
- {
- /*
- * NOTE: the above is not a typo, we can live without the typefind,
- * just, our stream detection will not be as accurate as we would.
- * Anyway, if this fails, there is some problem, probabily a memory
- * error.
- */
- g_signal_connect (G_OBJECT (typefind), "have-type",
- G_CALLBACK (typefind_callback), properties);
- }
-
- gst_bin_add_many (GST_BIN (pipeline), source, decoder, NULL);
- gst_element_link (source, decoder);
-
- /*
- * now, we set the pipeline playing state to pause and traverse it
- * to get the info we need.
- */
-
- res = gst_element_set_state (pipeline, GST_STATE_PAUSED);
- if (res == GST_STATE_CHANGE_FAILURE)
- {
- JCL_free_cstring (env, _file, file);
- gst_element_set_state (pipeline, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (pipeline));
-
- free_properties(properties);
-
- return JNI_FALSE;
- }
-
- /* (GstClockTime) 300000000 ? */
- res = gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
- if (res != GST_STATE_CHANGE_SUCCESS)
- {
- JCL_free_cstring (env, _file, file);
- gst_element_set_state (pipeline, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT (pipeline));
-
- free_properties(properties);
-
- return JNI_FALSE;
- }
-
- result = JNI_FALSE;
- if (fill_info (decoder, properties))
- {
- result = set_strings (env, GstHeader, properties, header);
- }
-
- /* free stuff */
- JCL_free_cstring (env, _file, file);
- gst_element_set_state (pipeline, GST_STATE_NULL);
-
- gst_object_unref (GST_OBJECT (pipeline));
-
- free_properties (properties);
-
- return result;
-}
-
-/* ***** END: NATIVE FUNCTIONS ***** */
-
-/* ***** PRIVATE FUNCTIONS IMPLEMENTATION ***** */
-static gboolean typefind_callback(GstElement *typefind __attribute__ ((unused)),
- guint probability __attribute__ ((unused)),
- const GstCaps *caps,
- gpointer data)
-{
- GstStructure *structure = NULL;
- AudioProperties *properties = NULL;
-
- const char *mpeg = NULL;
-
- properties = (AudioProperties *) data;
-
- structure = gst_caps_get_structure (caps, 0);
-
- /* MIMETYPE */
- properties->mimetype = gst_structure_get_name (structure);
- mpeg = get_string_property(structure, "mpegversion");
-
- if (mpeg != NULL)
- {
- properties->layer = get_string_property(structure, "layer");
- properties->type = (gchar *) g_malloc0 (_GST_MALLOC_SIZE_);
- g_snprintf ((gpointer) properties->type, _GST_MALLOC_SIZE_,
- "MPEG%sV%s", mpeg,
- properties->layer);
-
- g_free ((gpointer) mpeg);
- }
-
- return TRUE;
-}
-
-static void
-new_decoded_pad (GstElement *decoder __attribute__ ((unused)),
- GstPad *pad,
- gboolean last __attribute__ ((unused)),
- GstElement *pipeline)
-{
- GstElement *fakesink = NULL;
- GstPad *sinkpad = NULL;
-
- fakesink = gst_element_factory_make ("fakesink", NULL);
- gst_bin_add (GST_BIN (pipeline), fakesink);
-
- sinkpad = gst_element_get_pad (fakesink, "sink");
- if (GST_PAD_LINK_FAILED (gst_pad_link (pad, sinkpad)))
- {
- gst_bin_remove (GST_BIN (pipeline), fakesink);
- }
- else
- {
- gst_element_set_state (fakesink, GST_STATE_PAUSED);
- }
-}
-
-static gboolean
-set_strings (JNIEnv *env, const jclass GstHeader,
- const AudioProperties *properties, jobject header)
-{
- gboolean result = FALSE;
-
- /*
- * we only need at least one of them to be sure we can handle this
- * kind of audio data.
- */
-
- /* now, map our properties to the java class */
- set_string (env, GstHeader, header, "mimetype", properties->mimetype);
-
- if (set_string (env, GstHeader, header, "endianness",
- properties->endianness)) result = JNI_TRUE;
-
- if (set_string (env, GstHeader, header, "channels",
- properties->channels)) result = JNI_TRUE;
-
- if (set_string (env, GstHeader, header, "rate",
- properties->rate)) result = JNI_TRUE;
-
- if (set_string (env, GstHeader, header, "width",
- properties->width)) result = JNI_TRUE;
-
- if (set_string (env, GstHeader, header, "depth",
- properties->depth)) result = JNI_TRUE;
-
- if (set_string (env, GstHeader, header, "isSigned",
- properties->signess)) result = JNI_TRUE;
-
- if (set_string (env, GstHeader, header, "name",
- properties->name)) result = JNI_TRUE;
-
- /* non primary properties */
- set_string (env, GstHeader, header, "layer", properties->layer);
- set_string (env, GstHeader, header, "bitrate", properties->bitrate);
- set_string (env, GstHeader, header, "framed", properties->framed);
- set_string (env, GstHeader, header, "type", properties->type);
-
- return result;
-}
-
-static gboolean fill_info (GstElement *decoder, AudioProperties *properties)
-{
- GstIterator *it = NULL;
- gpointer data = NULL;
- gboolean result = FALSE;
-
- it = gst_element_iterate_src_pads (decoder);
- while (gst_iterator_next (it, &data) == GST_ITERATOR_OK)
- {
- GstPad *pad = GST_PAD (data);
- GstCaps *caps;
-
- GstStructure *structure;
-
- const gchar *caps_string = NULL;
-
- caps = gst_pad_get_caps (pad);
- caps_string = gst_caps_to_string (caps);
-
- if (g_str_has_prefix (caps_string, "video"))
- {
- /* no video support, this is an audio library */
-
- g_free ((gpointer) caps_string);
- gst_caps_unref (caps);
- gst_object_unref (pad);
-
- continue;
- }
-
- g_free ((gpointer) caps_string);
-
- structure = gst_caps_get_structure (GST_CAPS (caps), 0);
-
- /* fill the properties we need */
-
- /* SIGNESS */
- properties->signess = get_boolean_property(structure, "signed");
- if (properties->signess != NULL)
- {
- result = TRUE;
- }
-
- /* ENDIANNESS */
- properties->endianness = get_string_property(structure, "endianness");
- if (properties->endianness != NULL)
- {
- result = TRUE;
- }
-
- /* CHANNELS */
- properties->channels = get_string_property(structure, "channels");
- if (properties->channels != NULL)
- {
- result = TRUE;
- }
-
- /* RATE */
- properties->rate = get_string_property(structure, "rate");
- if (properties->rate != NULL)
- {
- result = TRUE;
- }
-
- /* WIDTH */
- properties->width = get_string_property(structure, "width");
- if (properties->width != NULL)
- {
- result = TRUE;
- }
-
- /* DEPTH */
- properties->depth = get_string_property(structure, "depth");
- if (properties->depth != NULL)
- {
- result = TRUE;
- }
-
- gst_caps_unref (caps);
- gst_object_unref (pad);
- }
-
- return result;
-}
-
-static void free_properties (AudioProperties *properties)
-{
- if (properties->name != NULL) g_free((gpointer) properties->name);
- if (properties->endianness != NULL) g_free((gpointer) properties->endianness);
- if (properties->channels != NULL) g_free((gpointer) properties->channels);
- if (properties->rate != NULL) g_free((gpointer) properties->rate);
- if (properties->width != NULL) g_free((gpointer) properties->width);
- if (properties->depth != NULL) g_free((gpointer) properties->depth);
- if (properties->layer != NULL) g_free((gpointer) properties->layer);
- if (properties->bitrate != NULL) g_free((gpointer) properties->bitrate);
- if (properties->framed != NULL) g_free((gpointer) properties->framed);
-
- if (properties != NULL) g_free ((gpointer) properties);
-}
-
-static void reset_properties (AudioProperties *properties)
-{
- properties->done = FALSE;
- properties->signess = FALSE;
- properties->name = NULL;
- properties->endianness = NULL;
- properties->channels = NULL;
- properties->rate = NULL;
- properties->width = NULL;
- properties->depth = NULL;
- properties->layer = NULL;
- properties->bitrate = NULL;
- properties->framed = NULL;
-}
-
-static gchar *get_string_property (const GstStructure *structure,
- const gchar *property)
-{
- int props = 0;
- gchar *result = NULL;
-
- if (property == NULL)
- {
- return NULL;
- }
-
- /* we don't need more */
- result = (gchar *) g_malloc0 (_GST_MALLOC_SIZE_);
- if (result == NULL)
- {
- /* huston, we have a problem here... */
- return NULL;
- }
-
- if (gst_structure_get_int (structure, property, &props))
- {
- g_snprintf (result, _GST_MALLOC_SIZE_, "%d", props);
- }
- else
- {
- g_free ((gpointer) result);
- return NULL;
- }
-
- return result;
-}
-
-static gchar *get_boolean_property (const GstStructure *structure,
- const gchar *property)
-{
- gchar *result = NULL;
- gboolean props = FALSE;
-
- result = (gchar *) g_malloc0 (_GST_MALLOC_SIZE_);
- if (result == NULL)
- {
- /* huston, we have a problem here... */
- return NULL;
- }
-
- if (gst_structure_get_boolean (structure, property, &props))
- {
- g_snprintf (result, _GST_MALLOC_SIZE_, "%s", (props ? "true" : "false" ));
- }
- else
- {
- g_free ((gpointer) result);
- return NULL;
- }
-
- return result;
-}
-
-static gboolean set_string (JNIEnv *env, const jclass GstHeader,
- jobject header,
- const char *field,
- const gchar *property)
-{
- jfieldID _fid = NULL;
- jstring property_string_field = NULL;
-
- if (property == NULL || field == NULL || header == NULL || GstHeader == NULL)
- {
- return JNI_FALSE;
- }
-
- _fid = (*env)->GetFieldID(env, GstHeader, field, "Ljava/lang/String;");
- if (_fid == NULL)
- {
- return JNI_FALSE; /* failed to find the field */
- }
-
- property_string_field = (*env)->NewStringUTF(env, property);
- if (property_string_field == NULL)
- {
- return JNI_FALSE;
- }
-
- (*env)->SetObjectField(env, header, _fid, property_string_field);
-
- return JNI_TRUE;
-}
-
-static void
-element_added (GstBin *bin, GstElement *element, gpointer data)
-{
- GstElementFactory *factory;
-
- factory = gst_element_get_factory (element);
- ((AudioProperties *) data)->name = gst_element_factory_get_longname (factory);
-}
-
-/* ***** END: PRIVATE FUNCTIONS IMPLEMENTATION ***** */
nativeexeclib_LTLIBRARIES = libgstreamerpeer.la
-libgstreamerpeer_la_SOURCES = GStreamerIOPeer.c \
- gstinputstream.c \
- gstclasspathsrc.c \
- gstclasspathsrc.h \
- gstinputstream.h
+libgstreamerpeer_la_SOURCES = gst_peer.c \
+ gstreamer_io_peer.c \
+ gst_native_data_line.c \
+ gst_input_stream.c \
+ gst_native_pipeline.c \
+ gst_classpath_src.c \
+ gst_peer.h \
+ gst_classpath_src.h \
+ gst_input_stream.h \
+ gst_native_pipeline.h
libgstreamerpeer_la_LIBADD = $(top_builddir)/native/jni/classpath/jcl.lo
# We cannot use -Wwrite-strings and the strict flags since
# gstreamer contain broken prototypes (by design).
-AM_CFLAGS = @WARNING_CFLAGS@ -Wno-write-strings -Wno-missing-field-initializers \
+AM_CFLAGS = @WARNING_CFLAGS@ -Wno-write-strings \
+ -Wno-missing-field-initializers \
@ERROR_CFLAGS@ -Wno-unused-parameter @GSTREAMER_BASE_CFLAGS@ \
@GDK_CFLAGS@ @GSTREAMER_CFLAGS@ @GSTREAMER_PLUGINS_BASE_CFLAGS@ \
@EXTRA_CFLAGS@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
LTLIBRARIES = $(nativeexeclib_LTLIBRARIES)
libgstreamerpeer_la_DEPENDENCIES = \
$(top_builddir)/native/jni/classpath/jcl.lo
-am_libgstreamerpeer_la_OBJECTS = GStreamerIOPeer.lo gstinputstream.lo \
- gstclasspathsrc.lo
+am_libgstreamerpeer_la_OBJECTS = gst_peer.lo gstreamer_io_peer.lo \
+ gst_native_data_line.lo gst_input_stream.lo \
+ gst_native_pipeline.lo gst_classpath_src.lo
libgstreamerpeer_la_OBJECTS = $(am_libgstreamerpeer_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
depcomp = $(SHELL) $(top_srcdir)/../../depcomp
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
nativeexeclib_LTLIBRARIES = libgstreamerpeer.la
-libgstreamerpeer_la_SOURCES = GStreamerIOPeer.c \
- gstinputstream.c \
- gstclasspathsrc.c \
- gstclasspathsrc.h \
- gstinputstream.h
+libgstreamerpeer_la_SOURCES = gst_peer.c \
+ gstreamer_io_peer.c \
+ gst_native_data_line.c \
+ gst_input_stream.c \
+ gst_native_pipeline.c \
+ gst_classpath_src.c \
+ gst_peer.h \
+ gst_classpath_src.h \
+ gst_input_stream.h \
+ gst_native_pipeline.h
libgstreamerpeer_la_LIBADD = $(top_builddir)/native/jni/classpath/jcl.lo
libgstreamerpeer_la_LDFLAGS = $(AM_LDFLAGS) @GST_PLUGIN_LDFLAGS@ -avoid-version
# We cannot use -Wwrite-strings and the strict flags since
# gstreamer contain broken prototypes (by design).
-AM_CFLAGS = @WARNING_CFLAGS@ -Wno-write-strings -Wno-missing-field-initializers \
+AM_CFLAGS = @WARNING_CFLAGS@ -Wno-write-strings \
+ -Wno-missing-field-initializers \
@ERROR_CFLAGS@ -Wno-unused-parameter @GSTREAMER_BASE_CFLAGS@ \
@GDK_CFLAGS@ @GSTREAMER_CFLAGS@ @GSTREAMER_PLUGINS_BASE_CFLAGS@ \
@EXTRA_CFLAGS@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GStreamerIOPeer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstclasspathsrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstinputstream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_classpath_src.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_input_stream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_native_data_line.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_native_pipeline.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_peer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstreamer_io_peer.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
--- /dev/null
+/*gstclasspathsrc.c - Class file for the GstClasspathPlugin
+ Copyright (C) 2007 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/*
+ * We don't really use version numbering here, we give it the same version
+ * number of classpath, so that gstreamer is happy.
+ * TODO: Maybe this should be moved in config.h instead?
+ */
+#define CLASSPATH_GST_PLUGIN_VERSION PACKAGE_VERSION
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesrc.h>
+#include <gst/base/gstpushsrc.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+
+#include <gdk/gdk.h>
+
+#include "gst_classpath_src.h"
+#include "gst_input_stream.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_classpath_src_debug);
+#define GST_CAT_DEFAULT gst_classpath_src_debug
+
+enum
+{
+ ARG_0,
+ ARG_INPUTSTREAM
+};
+
+struct _GstClasspathSrcPrivate
+{
+ GstInputStream *istream;
+ GstCaps *caps;
+};
+
+static const GstElementDetails gst_classpath_src_details =
+GST_ELEMENT_DETAILS ("ClasspathSrc",
+ "Source/Network",
+ "Read from a java input stream",
+ "Mario Torre <neugens@limasoftware.net>");
+
+static GstStaticPadTemplate _template =
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+/* ***** plugin init ***** */
+
+static void
+_do_init (GType filesrc_type __attribute__ ((unused)))
+{
+ GST_DEBUG_CATEGORY_INIT (gst_classpath_src_debug, "classpathsrc",
+ 0, "classpathsrc");
+}
+
+GST_BOILERPLATE_FULL (GstClasspathSrc, gst_classpath_src, GstPushSrc,
+ GST_TYPE_PUSH_SRC, _do_init);
+
+static gboolean
+plugin_init (GstPlugin *plugin)
+{
+ return gst_element_register (plugin, "classpathsrc",
+ GST_RANK_NONE, GST_TYPE_CLASSPATH_SRC);
+}
+
+GST_PLUGIN_DEFINE_STATIC (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "classpathsrc",
+ "Java InputStream Reader",
+ plugin_init, CLASSPATH_GST_PLUGIN_VERSION,
+ GST_LICENSE_UNKNOWN, /* GPL + Exception */
+ "Classpath", "http://www.classpath.org/")
+
+/* ***** public class methods ***** */
+
+static void gst_classpath_src_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+static void gst_classpath_src_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+
+static void gst_classpath_src_finalize (GObject *object);
+
+static GstCaps *gst_classpath_src_getcaps (GstBaseSrc *basesrc);
+
+static gboolean gst_classpath_src_start (GstBaseSrc *basesrc);
+
+static gboolean gst_classpath_src_stop (GstBaseSrc *basesrc);
+
+static GstFlowReturn gst_classpath_src_create (GstPushSrc *src,
+ GstBuffer **buffer);
+
+static GstFlowReturn
+gst_classpath_src_create_stream (GstClasspathSrc *src, GstBuffer **buffer);
+
+static GstFlowReturn
+check_read (GstClasspathSrc *src, int read, int buffer_size,
+ GstBuffer **buffer);
+
+/* ***** public class methods: end ***** */
+
+static void
+gst_classpath_src_base_init (gpointer gclass)
+{
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (gclass);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&_template));
+
+ gst_element_class_set_details (gstelement_class, &gst_classpath_src_details);
+}
+
+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);
+
+ g_type_class_add_private (klass, sizeof (GstClasspathSrcPrivate));
+
+ /* getter and setters */
+
+ gobject_class->set_property = gst_classpath_src_set_property;
+ gobject_class->get_property = gst_classpath_src_get_property;
+
+ /* register properties */
+ pspec = g_param_spec_pointer (GST_CLASSPATH_SRC_ISTREAM,
+ "GstInputStream instance",
+ "GstInputStream instance",
+ G_PARAM_READWRITE);
+ g_object_class_install_property (gobject_class, ARG_INPUTSTREAM, pspec);
+
+ /* register callbacks */
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_classpath_src_finalize);
+
+ gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_classpath_src_getcaps);
+ gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_classpath_src_start);
+ gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_classpath_src_stop);
+
+ gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_classpath_src_create);
+}
+
+/* ***** */
+
+static void
+gst_classpath_src_init (GstClasspathSrc *src,
+ GstClasspathSrcClass * g_class __attribute__ ((unused)))
+{
+ src->priv = G_TYPE_INSTANCE_GET_PRIVATE (src, GST_TYPE_CLASSPATH_SRC,
+ GstClasspathSrcPrivate);
+
+ src->priv->istream = NULL;
+ src->priv->caps = NULL;
+}
+
+static void
+gst_classpath_src_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/* ************************************************************************** */
+
+static void
+gst_classpath_src_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GstClasspathSrc *src;
+
+ g_return_if_fail (GST_IS_CLASSPATH_SRC (object));
+
+ src = GST_CLASSPATH_SRC (object);
+
+ GST_OBJECT_LOCK (src);
+ switch (prop_id)
+ {
+ case ARG_INPUTSTREAM:
+ {
+ GST_STATE_LOCK (src);
+ {
+ GstState state;
+ state = GST_STATE (src);
+
+ if (state != GST_STATE_READY && state != GST_STATE_NULL)
+ {
+ GST_DEBUG_OBJECT (src, "setting reader in wrong state");
+ GST_STATE_UNLOCK (src);
+ break;
+ }
+ }
+ GST_STATE_UNLOCK (src);
+
+ /* FIXME: check if this is a valid instance of GstInputStream */
+ src->priv->istream = g_value_get_pointer (value);
+ }
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+ GST_OBJECT_UNLOCK (src);
+}
+
+static void
+gst_classpath_src_get_property (GObject *object,
+ guint prop_id __attribute__ ((unused)),
+ GValue *value __attribute__ ((unused)),
+ GParamSpec *pspec __attribute__ ((unused)))
+{
+ /* TODO */
+}
+
+/* ************************************************************************** */
+
+static GstCaps *gst_classpath_src_getcaps (GstBaseSrc *basesrc)
+{
+ GstClasspathSrc *src;
+ GstCaps *caps = NULL;
+
+ src = GST_CLASSPATH_SRC (basesrc);
+
+ if (src->priv->caps)
+ caps = gst_caps_copy (src->priv->caps);
+ else
+ caps = gst_caps_new_any ();
+
+ GST_DEBUG_OBJECT (src, "returning caps %" GST_PTR_FORMAT, caps);
+ g_assert (GST_IS_CAPS (caps));
+
+ return caps;
+}
+
+static GstFlowReturn
+gst_classpath_src_create_stream (GstClasspathSrc *src, GstBuffer **buffer)
+{
+ int buffer_size = 2048;
+ int read = -1;
+
+ buffer_size = gst_input_stream_available (src->priv->istream);
+ if (buffer_size < 0)
+ return GST_FLOW_ERROR;
+ else if (buffer_size == 0)
+ return GST_FLOW_WRONG_STATE;
+
+ *buffer = gst_buffer_new_and_alloc (buffer_size);
+ if (*buffer == NULL)
+ {
+ return GST_FLOW_ERROR;
+ }
+
+ read = gst_input_stream_read (src->priv->istream,
+ (int *) GST_BUFFER_DATA (*buffer),
+ 0,
+ buffer_size);
+
+ return check_read (src, read, buffer_size, buffer);
+}
+
+GstFlowReturn
+check_read (GstClasspathSrc *src, int read, int buffer_size, GstBuffer **buffer)
+{
+ if (G_UNLIKELY (read < 0))
+ {
+ g_warning("GST_FLOW_UNEXPECTED (read < 0)");
+
+ gst_buffer_unref (*buffer);
+ *buffer = NULL;
+
+ return GST_FLOW_ERROR;
+ }
+ else if (G_UNLIKELY (read == 0))
+ {
+ g_warning("GST_FLOW_WRONG_STATE (read == 0)");
+
+ gst_buffer_unref (*buffer);
+ *buffer = NULL;
+
+ return GST_FLOW_WRONG_STATE;
+ }
+ else if (G_UNLIKELY (read < buffer_size))
+ {
+ g_warning("shorter read");
+ gst_buffer_unref (*buffer);
+ *buffer = NULL;
+
+ return GST_FLOW_ERROR;
+ }
+
+ GST_BUFFER_SIZE (*buffer) = read;
+ gst_buffer_set_caps (*buffer, src->priv->caps);
+
+ return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_classpath_src_create (GstPushSrc *basesrc, GstBuffer **buffer)
+{
+ GstClasspathSrc *src = NULL;
+ GstFlowReturn ret = GST_FLOW_OK;
+
+ src = GST_CLASSPATH_SRC (basesrc);
+
+ /* create the buffer */
+ ret = gst_classpath_src_create_stream (src, buffer);
+
+ return ret;
+}
+
+static gboolean
+gst_classpath_src_start (GstBaseSrc *basesrc)
+{
+ GstClasspathSrc *src;
+
+ src = GST_CLASSPATH_SRC (basesrc);
+
+ if (src->priv->istream == NULL)
+ {
+ g_warning("GstInputStream is still null. You need to " \
+ "pass a valid InputStream object");
+
+ GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
+ ("GstInputStream is still null. You need to " \
+ "pass a valid InputStream"));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+gst_classpath_src_stop (GstBaseSrc *basesrc)
+{
+ GstClasspathSrc *src;
+
+ src = GST_CLASSPATH_SRC (basesrc);
+
+ /* clean the stream */
+ if (src->priv->istream != NULL)
+ gst_input_stream_clean (src->priv->istream);
+
+ if (src->priv->caps) {
+ gst_caps_unref (src->priv->caps);
+ src->priv->caps = NULL;
+ }
+
+ return TRUE;
+}
--- /dev/null
+/*gstclasspathsrc.h - Header file for the GstClasspathPlugin
+ Copyright (C) 2007 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. */
+
+#ifndef __GST_CLASSPATH_SRC_H__
+#define __GST_CLASSPATH_SRC_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstpushsrc.h>
+
+#include "gst_input_stream.h"
+
+G_BEGIN_DECLS
+
+/* #defines don't like whitespacey bits */
+#define GST_TYPE_CLASSPATH_SRC (gst_classpath_src_get_type())
+
+#define GST_CLASSPATH_SRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CLASSPATH_SRC,GstClasspathSrc))
+
+#define GST_CLASSPATH_SRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CLASSPATH_SRC,GstClasspathSrcClass))
+
+#define GST_IS_CLASSPATH_SRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CLASSPATH_SRC))
+
+#define GST_IS_CLASSPATH_SRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CLASSPATH_SRC))
+
+typedef struct _GstClasspathSrcPrivate GstClasspathSrcPrivate;
+typedef struct _GstClasspathSrc GstClasspathSrc;
+typedef struct _GstClasspathSrcClass GstClasspathSrcClass;
+
+struct _GstClasspathSrc
+{
+ GstPushSrc element;
+
+ /* instance members */
+ GstClasspathSrcPrivate *priv;
+};
+
+struct _GstClasspathSrcClass
+{
+ GstPushSrcClass parent_class;
+};
+
+GType gst_classpath_src_get_type (void);
+
+/* exported properties */
+
+#define GST_CLASSPATH_SRC_ISTREAM "input-stream"
+
+G_END_DECLS
+
+#endif /* __GST_CLASSPATH_SRC_H__ */
--- /dev/null
+/*GstInputStream.c - Header file for the GstClasspathPlugin
+ Copyright (C) 2007 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. */
+
+#include <jni.h>
+#include <jcl.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <gdk/gdk.h>
+
+#include <glib.h>
+
+#include "gst_peer.h"
+
+#include "gnu_javax_sound_sampled_gstreamer_io_GstInputStream.h"
+#include "gst_input_stream.h"
+
+/* for caching */
+static jmethodID readID = NULL;
+static jmethodID pointerConstructorID = NULL;
+static jmethodID availableID = NULL;
+
+static jfieldID streamID = NULL;
+static jfieldID pointerDataID = NULL;
+
+struct _GstInputStreamPrivate
+{
+ JavaVM *vm;
+ jclass readerClass;
+ jclass pointerClass;
+
+ jobject reader;
+};
+
+/* ************************************************************************** */
+
+static void init_pointer_IDs (JNIEnv* env);
+
+/* ************************************************************************** */
+
+/* JNI Methods */
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_io_GstInputStream_init_1id_1cache
+ (JNIEnv *env, jclass clazz)
+{
+ readID = (*env)->GetMethodID(env, clazz, "read", "([BII)I");
+ availableID = (*env)->GetMethodID(env, clazz, "available", "()I");
+
+ streamID = (*env)->GetFieldID(env, clazz, "gstInputStream",
+ "Lgnu/classpath/Pointer;");
+ init_pointer_IDs(env);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_io_GstInputStream_init_1instance
+ (JNIEnv *env, jobject reader)
+{
+ GstInputStream *istream = NULL;
+
+ jclass localReader = NULL;
+ jclass localPointer = NULL;
+ jobject _pointer = NULL;
+
+ istream = (GstInputStream *) JCL_malloc (env, sizeof (GstInputStream));
+ if (istream == NULL)
+ return;
+
+ istream->priv = (GstInputStreamPrivate *)
+ JCL_malloc (env, sizeof (GstInputStreamPrivate));
+ if (istream->priv == NULL)
+ {
+ JCL_free (env, istream);
+ return;
+ }
+
+ /* get a local references first */
+ localReader = (*env)->GetObjectClass(env, reader);
+ if (localReader == NULL)
+ {
+ JCL_free (env, istream->priv);
+ JCL_free (env, istream);
+ JCL_ThrowException (env, "java/lang/InternalError",
+ "Class Initialization failed.");
+
+ return;
+ }
+
+#if SIZEOF_VOID_P == 8
+ localPointer = JCL_FindClass (env, "gnu/classpath/Pointer64");
+#else
+# if SIZEOF_VOID_P == 4
+ localPointer = JCL_FindClass (env, "gnu/classpath/Pointer32");
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+
+ if (localReader == NULL || localPointer == NULL)
+ {
+ JCL_free (env, istream->priv);
+ JCL_free (env, istream);
+ JCL_ThrowException (env, "java/lang/InternalError",
+ "Class Initialization failed.");
+ return;
+ }
+
+ /* fill out our structure */
+ istream->priv->readerClass = (*env)->NewGlobalRef(env, localReader);
+ istream->priv->pointerClass = (*env)->NewGlobalRef(env, localPointer);
+ (*env)->GetJavaVM(env, &istream->priv->vm);
+ istream->priv->reader = (*env)->NewGlobalRef(env, reader);
+
+ _pointer = (*env)->GetObjectField(env, reader, streamID);
+
+ /* this should be always null */
+ if (_pointer == NULL)
+ {
+#if SIZEOF_VOID_P == 8
+ _pointer = (*env)->NewObject(env, istream->priv->pointerClass,
+ pointerConstructorID, (jlong) istream);
+#else
+ _pointer = (*env)->NewObject(env, istream->priv->pointerClass,
+ pointerConstructorID, (jint) istream);
+#endif
+ }
+ else
+ {
+#if SIZEOF_VOID_P == 8
+ (*env)->SetLongField(env, reader, streamID, (jlong) istream);
+#else
+ (*env)->SetIntField(env, reader, streamID, (jint) istream);
+#endif
+ }
+
+ /* store back our pointer into the calling class */
+ (*env)->SetObjectField(env, reader, streamID, _pointer);
+}
+
+/* exported library functions */
+
+void
+gst_input_stream_clean (GstInputStream *self)
+{
+ JNIEnv *env = NULL;
+
+ env = gst_get_jenv (self->priv->vm);
+
+ (*env)->DeleteGlobalRef (env, self->priv->reader);
+ (*env)->DeleteGlobalRef (env, self->priv->readerClass);
+ (*env)->DeleteGlobalRef (env, self->priv->pointerClass);
+
+ JCL_free (env, self->priv);
+ JCL_free (env, self);
+}
+
+int
+gst_input_stream_available (GstInputStream *self)
+{
+ JNIEnv *env = NULL;
+
+ if (self == NULL || self->priv == NULL ||
+ self->priv->vm == NULL || self->priv->reader == NULL)
+ {
+ return -1;
+ }
+
+ env = gst_get_jenv (self->priv->vm);
+ if (env == NULL)
+ {
+ g_warning("GstInputStream::gst_input_stream_available " \
+ "failed to get java env");
+ return -1;
+ }
+
+ return (*env)->CallIntMethod (env, self->priv->reader, availableID);
+}
+
+int
+gst_input_stream_read (GstInputStream *self, int *data, int offset,
+ int length)
+{
+ JNIEnv *env = NULL;
+
+ int ret = -1;
+ jbyteArray buffer;
+ jbyte *bytes = NULL;
+
+ if (self == NULL || self->priv == NULL ||
+ self->priv->vm == NULL || self->priv->reader == NULL)
+ {
+ return -1;
+ }
+
+ env = gst_get_jenv (self->priv->vm);
+ if (env == NULL)
+ {
+ g_warning("GstInputStream::gst_input_stream_read failed to get java env");
+ return -1;
+ }
+
+ buffer = (*env)->NewByteArray (env, length);
+ if (buffer == NULL)
+ {
+ g_warning ("GstInputStream::gst_input_stream_read called, failed");
+ return -1;
+ }
+
+ ret = (*env)->CallIntMethod (env, self->priv->reader, readID, buffer, 0,
+ length);
+ if (ret < 0)
+ {
+ (*env)->DeleteLocalRef(env, buffer);
+ return ret;
+ }
+
+ bytes = (*env)->GetByteArrayElements (env, buffer, NULL);
+
+ /* copy bytes and release */
+ memcpy (data + offset, bytes, ret);
+
+ (*env)->ReleaseByteArrayElements (env, buffer, bytes, 0);
+ (*env)->DeleteLocalRef (env, buffer);
+
+ return ret;
+}
+
+/* private functions */
+
+static void init_pointer_IDs (JNIEnv* env)
+{
+ jclass pointerClass = NULL;
+
+#if SIZEOF_VOID_P == 8
+ pointerClass = JCL_FindClass (env, "gnu/classpath/Pointer64");
+ if (pointerClass != NULL)
+ {
+ pointerDataID = (*env)->GetFieldID (env, pointerClass, "data", "J");
+ pointerConstructorID = (*env)->GetMethodID (env, pointerClass, "<init>",
+ "(J)V");
+ }
+#else
+# if SIZEOF_VOID_P == 4
+ pointerClass = JCL_FindClass (env, "gnu/classpath/Pointer32");
+ if (pointerClass != NULL)
+ {
+ pointerDataID = (*env)->GetFieldID(env, pointerClass, "data", "I");
+ pointerConstructorID = (*env)->GetMethodID(env, pointerClass,
+ "<init>", "(I)V");
+ }
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+}
--- /dev/null
+/*gstinputstream.h - Header file for the GstClasspathPlugin
+ Copyright (C) 2007 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. */
+
+#ifndef __GST_INPUT_STREAM_H__
+#define __GST_INPUT_STREAM_H__
+
+typedef struct _GstInputStream GstInputStream;
+typedef struct _GstInputStreamPrivate GstInputStreamPrivate;
+
+struct _GstInputStream
+{
+ /* instance members */
+ GstInputStreamPrivate *priv;
+};
+
+/**
+ * Clean the given instance of GstInputStream so that the garbage
+ * collector can collect the cached Java classes.
+ * Call this fuction when you don't need anymore to use this instance of
+ * GstInputStream. Note that failure to call this routine will result in
+ * memroy leaks.
+ */
+void gst_input_stream_clean (GstInputStream *self);
+
+/**
+ * Perform the "read" operation on this GstInputStream.
+ */
+int gst_input_stream_read (GstInputStream *self, int *data, int offset,
+ int length);
+
+/**
+ * Returns the number of byte currently available for read in this
+ * GstInputStream.
+ */
+int gst_input_stream_available (GstInputStream *self);
+
+#endif /* __GST_INPUT_STREAM_H__ */
--- /dev/null
+/*gst_native_data_line.c - Implements the native methods of GstNativeDataLine
+ Copyright (C) 2007 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. */
+
+#include <jni.h>
+
+#include <gst/gst.h>
+
+#include "jcl.h"
+#include "gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine.h"
+
+#include "gst_peer.h"
+#include "gst_classpath_src.h"
+#include "gst_native_pipeline.h"
+
+static jfieldID pointerDataFID = NULL;
+
+/* ************************************************************************** */
+
+static GstElement *setup_pipeline (GstNativePipeline *jpipeline, int fd);
+static void
+gst_newpad (GstElement *decodebin, GstPad *pad, gboolean last, gpointer data);
+
+/* ************************************************************************** */
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine_init_1id_1cache
+ (JNIEnv *env __attribute__ ((unused)), jclass clazz __attribute__ ((unused)))
+{
+ jclass pointerClass = NULL;
+
+#if SIZEOF_VOID_P == 8
+ pointerClass = JCL_FindClass (env, "gnu/classpath/Pointer64");
+ if (pointerClass != NULL)
+ {
+ pointerDataFID = (*env)->GetFieldID (env, pointerClass, "data", "J");
+ }
+#else
+# if SIZEOF_VOID_P == 4
+ pointerClass = JCL_FindClass (env, "gnu/classpath/Pointer32");
+ if (pointerClass != NULL)
+ {
+ pointerDataFID = (*env)->GetFieldID(env, pointerClass, "data", "I");
+ }
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+}
+
+JNIEXPORT jboolean JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstNativeDataLine_setup_1sink_1pipeline
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)),
+ jobject pointer)
+{
+ GstNativePipeline *jpipeline = NULL;
+
+ GstElement *pipeline = NULL;
+ GstElement *sink = NULL;
+ GstElement *audioconv= NULL;
+ GstElement *resample = NULL;
+ GstElement *audio = NULL;
+ GstElement *decodebin = NULL;
+
+ GstPad *audiopad = NULL;
+
+ gst_init (NULL, NULL);
+
+ /* get the pipeline from the pointer, then create it if needed */
+ jpipeline = (GstNativePipeline *) get_object_from_pointer (env, pointer,
+ pointerDataFID);
+ if (jpipeline == NULL)
+ return JNI_FALSE;
+
+ pipeline = setup_pipeline (jpipeline,
+ gst_native_pipeline_get_pipeline_fd (jpipeline));
+ if (pipeline == NULL)
+ return JNI_FALSE;
+
+ /* add the audio sink to the pipeline */
+ /* TODO: hardcoded values */
+ sink = gst_element_factory_make ("autoaudiosink", "alsa-output");
+ if (sink == NULL)
+ {
+ gst_object_unref(GST_OBJECT(pipeline));
+ gst_object_unref(GST_OBJECT(sink));
+
+ g_warning ("unable to create sink\n");
+ return JNI_FALSE;
+ }
+
+ audioconv = gst_element_factory_make ("audioconvert", "aconv");
+ if (audioconv == NULL)
+ {
+ gst_object_unref(GST_OBJECT(pipeline));
+ gst_object_unref(GST_OBJECT(sink));
+ gst_object_unref(GST_OBJECT(decodebin));
+
+ g_warning ("unable to create audioconv\n");
+ return JNI_FALSE;
+ }
+
+ audio = gst_bin_new ("audiobin");
+ if (audio == NULL)
+ {
+ gst_object_unref(GST_OBJECT(pipeline));
+ gst_object_unref(GST_OBJECT(sink));
+ gst_object_unref(GST_OBJECT(decodebin));
+
+ g_warning ("unable to create audioconv\n");
+ return JNI_FALSE;
+ }
+
+ resample = gst_element_factory_make ("audioresample", "audioresample");
+ if (audioconv == NULL)
+ {
+ gst_object_unref(GST_OBJECT(pipeline));
+ gst_object_unref(GST_OBJECT(sink));
+ gst_object_unref(GST_OBJECT(decodebin));
+ gst_object_unref(GST_OBJECT(audio));
+
+ g_warning ("unable to create resample\n");
+ return JNI_FALSE;
+ }
+
+ audiopad = gst_element_get_pad (audioconv, "sink");
+ gst_bin_add_many (GST_BIN (audio), audioconv, resample, sink, NULL);
+ gst_element_link (audioconv, sink);
+
+ gst_element_add_pad (audio, gst_ghost_pad_new ("sink", audiopad));
+
+ gst_object_unref (audiopad);
+ gst_bin_add (GST_BIN (pipeline), audio);
+
+ decodebin = gst_bin_get_by_name (GST_BIN (pipeline), "decodebin");
+ g_signal_connect (decodebin, "new-decoded-pad", G_CALLBACK (gst_newpad),
+ audio);
+
+ gst_native_pipeline_set_pipeline (jpipeline, pipeline);
+
+ return JNI_TRUE;
+}
+
+/* ************************************************************************** */
+
+static GstElement *setup_pipeline (GstNativePipeline *jpipeline, int fd)
+{
+ GstElement *decodebin = NULL;
+ GstElement *source = NULL;
+
+ GstElement *pipeline = NULL;
+
+ if (fd < 0)
+ return NULL;
+
+ pipeline = gst_pipeline_new ("java sound pipeline");
+ if (pipeline == NULL)
+ return NULL;
+
+ decodebin = gst_element_factory_make ("decodebin", "decodebin");
+ if (decodebin == NULL)
+ {
+ gst_object_unref(GST_OBJECT(pipeline));
+ gst_object_unref(GST_OBJECT(source));
+
+ g_warning ("unable to create decodebin\n");
+ return NULL;
+ }
+
+ source = gst_element_factory_make ("fdsrc", "source");
+ if (source == NULL)
+ {
+ gst_object_unref(GST_OBJECT(pipeline));
+ gst_object_unref(GST_OBJECT(source));
+ gst_object_unref(GST_OBJECT(decodebin));
+
+ g_warning ("unable to create a source");
+ return JNI_FALSE;
+ }
+ g_object_set (G_OBJECT (source), "fd", fd, NULL);
+
+ gst_bin_add_many (GST_BIN (pipeline), source, decodebin, NULL);
+ gst_element_link (source, decodebin);
+
+ return pipeline;
+}
+
+static void
+gst_newpad (GstElement *decodebin, GstPad *pad, gboolean last, gpointer data)
+{
+ GstCaps *caps;
+ GstStructure *str;
+ GstPad *audiopad;
+
+ GstElement *audio = (GstElement *) data;
+
+ /* only link once */
+ audiopad = gst_element_get_pad (audio, "sink");
+ if (GST_PAD_IS_LINKED (audiopad))
+ {
+ g_object_unref (audiopad);
+ return;
+ }
+
+ /* check media type */
+ caps = gst_pad_get_caps (pad);
+ str = gst_caps_get_structure (caps, 0);
+ if (!g_strrstr (gst_structure_get_name (str), "audio"))
+ {
+ gst_caps_unref (caps);
+ gst_object_unref (audiopad);
+ return;
+ }
+ gst_caps_unref (caps);
+
+ /* link'n'play */
+ gst_pad_link (pad, audiopad);
+}
--- /dev/null
+/*gst_native_pipeline.c - Header file for the GstClasspathPlugin
+ Copyright (C) 2007 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. */
+
+#include <jni.h>
+#include <jcl.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <unistd.h>
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif /* HAVE_FCNTL_H */
+
+#if defined(HAVE_SYS_IOCTL_H)
+#define BSD_COMP /* Get FIONREAD on Solaris2 */
+#include <sys/ioctl.h>
+#endif
+#if defined(HAVE_SYS_FILIO_H) /* Get FIONREAD on Solaris 2.5 */
+#include <sys/filio.h>
+#endif
+
+#include <gdk/gdk.h>
+#include <glib.h>
+
+#include <gst/gst.h>
+
+#include "cpio.h"
+#include "gst_peer.h"
+
+#include "gnu_javax_sound_sampled_gstreamer_lines_GstPipeline.h"
+#include "gst_native_pipeline.h"
+
+static jmethodID pointerConstructorMID = NULL;
+
+static jfieldID pipelineFID = NULL;
+static jfieldID pointerDataFID = NULL;
+static jfieldID nameFID = NULL;
+static jfieldID capacityFID = NULL;
+
+/*
+ * Needed to compute the size of the data still available for processing in the
+ * pipeline. We give a default here but this will be overwritten by the
+ * detection routines.
+ */
+static long GST_DETECTED_PIPE_CAPACITY = 65536;
+
+/*
+ * Note: the Java code uses enum classes, these are not mapped into constants
+ * by the javah tool, changes to these values should be reflected in the Java
+ * side.
+ */
+enum
+{
+ PLAY,
+ PAUSE,
+ STOP
+};
+
+/*
+ * Defined as constants in the Java code, hence mapped by javah.
+ */
+enum
+{
+ READ = gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_READ,
+ WRITE = gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_WRITE
+};
+
+struct _GstNativePipelinePrivate
+{
+ JavaVM *vm;
+ jclass GstPipelineClass;
+ jclass PointerClass;
+
+ jobject jni_pipeline;
+
+ char *name;
+ int fd;
+
+ GstElement *pipeline;
+};
+
+/* ************************************************************************** */
+/*
+static void gst_native_pipeline_clean (GstNativePipeline *self);*/
+static char *create_name (void);
+static void init_pointer_IDs (JNIEnv* env);
+static jint get_free_space (int fd);
+static void detect_pipe_max (void);
+
+/* ************************************************************************** */
+
+/* JNI Methods */
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_init_1id_1cache
+ (JNIEnv *env, jclass clazz)
+{
+ pipelineFID = (*env)->GetFieldID (env, clazz, "pipeline",
+ "Lgnu/classpath/Pointer;");
+ nameFID = (*env)->GetFieldID (env, clazz, "name", "Ljava/lang/String;");
+ capacityFID = (*env)->GetFieldID (env, clazz, "capacity", "J");
+
+ init_pointer_IDs (env);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_init_1instance
+ (JNIEnv *env, jobject pipeline)
+{
+ GstNativePipeline *_pipeline = NULL;
+
+ jclass localGstPipelineClass = NULL;
+ jclass localPointerClass = NULL;
+ jobject _pointer = NULL;
+
+ _pipeline =
+ (GstNativePipeline *) JCL_malloc (env, sizeof (GstNativePipeline));
+ if (_pipeline == NULL)
+ return;
+
+ _pipeline->priv = (GstNativePipelinePrivate *)
+ JCL_malloc (env, sizeof (GstNativePipelinePrivate));
+ if (_pipeline->priv == NULL)
+ {
+ JCL_free (env, _pipeline);
+ return;
+ }
+
+#if SIZEOF_VOID_P == 8
+ localPointerClass = JCL_FindClass (env, "gnu/classpath/Pointer64");
+#else
+# if SIZEOF_VOID_P == 4
+ localPointerClass = JCL_FindClass (env, "gnu/classpath/Pointer32");
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+
+ localGstPipelineClass = (*env)->GetObjectClass(env, pipeline);
+ if (localGstPipelineClass == NULL || localGstPipelineClass == NULL)
+ {
+ JCL_free (env, _pipeline->priv);
+ JCL_free (env, _pipeline);
+ JCL_ThrowException (env, "java/lang/InternalError",
+ "Class Initialization failed.");
+ return;
+ }
+
+ GST_DETECTED_PIPE_CAPACITY = (long) (*env)->GetLongField(env, pipeline,
+ capacityFID);
+
+ /* fill the object */
+ (*env)->GetJavaVM(env, &_pipeline->priv->vm);
+ _pipeline->priv->jni_pipeline = (*env)->NewGlobalRef(env, pipeline);
+ _pipeline->priv->GstPipelineClass =
+ (*env)->NewGlobalRef(env, localGstPipelineClass);
+ _pipeline->priv->PointerClass = (*env)->NewGlobalRef(env, localPointerClass);
+ _pipeline->priv->pipeline = NULL;
+
+ _pointer = (*env)->GetObjectField(env, pipeline, pipelineFID);
+
+ if (_pointer == NULL)
+ {
+#if SIZEOF_VOID_P == 8
+ _pointer = (*env)->NewObject(env, _pipeline->priv->PointerClass,
+ pointerConstructorMID, (jlong) _pipeline);
+#else
+ _pointer = (*env)->NewObject(env, _pipeline->priv->PointerClass,
+ pointerConstructorMID, (jint) _pipeline);
+#endif
+ }
+ else
+ {
+#if SIZEOF_VOID_P == 8
+ (*env)->SetLongField(env, pipeline, pipelineFID, (jlong) _pipeline);
+#else
+ (*env)->SetIntField(env, pipeline, pipelineFID, (jint) _pipeline);
+#endif
+ }
+
+ /* store back our pointer into the calling class */
+ (*env)->SetObjectField(env, pipeline, pipelineFID, _pointer);
+}
+
+JNIEXPORT jboolean JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_set_1state
+ (JNIEnv *env, jclass clazz, jobject pointer, jint state)
+{
+ GstNativePipeline *jpipeline = NULL;
+ jboolean result = JNI_FALSE;
+
+ if (pointer == NULL)
+ {
+ JCL_ThrowException (env, "javax/sound/sampled/LineUnavailableException",
+ "Can't change pipeline state: " \
+ "pipeline not initialized");
+ return result;
+ }
+
+ jpipeline = (GstNativePipeline *) get_object_from_pointer (env, pointer,
+ pointerDataFID);
+ if (jpipeline == NULL)
+ return JNI_FALSE;
+
+ switch (state)
+ {
+ case (PLAY):
+ gst_element_set_state(GST_ELEMENT(jpipeline->priv->pipeline),
+ GST_STATE_PLAYING);
+ result = JNI_TRUE;
+ break;
+
+ case (PAUSE):
+ gst_element_set_state(GST_ELEMENT(jpipeline->priv->pipeline),
+ GST_STATE_PAUSED);
+ result = JNI_TRUE;
+ break;
+
+ case (STOP):
+#ifndef WITHOUT_FILESYSTEM
+ /* clean the pipeline and kill named pipe */
+ if (jpipeline->priv->name)
+ {
+ cpio_removeFile (jpipeline->priv->name);
+ g_free (jpipeline->priv->name);
+ jpipeline->priv->name = NULL;
+ }
+#endif /* WITHOUT_FILESYSTEM */
+
+ if (jpipeline->priv->pipeline != NULL)
+ gst_object_unref (GST_OBJECT(jpipeline->priv->pipeline));
+ result = JNI_TRUE;
+ break;
+
+ default:
+ /* nothing */
+ result = JNI_FALSE;
+ break;
+ }
+
+ return result;
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_open_1native_1pipe
+ (JNIEnv *env, jclass clazz, jobject pointer, jint mode)
+{
+ GstNativePipeline *jpipeline = NULL;
+
+ jpipeline = (GstNativePipeline *) get_object_from_pointer (env, pointer,
+ pointerDataFID);
+ switch (mode)
+ {
+ case (READ):
+ jpipeline->priv->fd =
+ open (jpipeline->priv->name, O_RDONLY | O_NONBLOCK);
+ break;
+
+ case (WRITE):
+ /* TODO: no-op currently */
+ break;
+ }
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_close_1native_1pipe
+ (JNIEnv *env, jclass clazz, jobject pointer)
+{
+#ifndef WITHOUT_FILESYSTEM
+ GstNativePipeline *jpipeline = NULL;
+ jpipeline = (GstNativePipeline *) get_object_from_pointer (env, pointer,
+ pointerDataFID);
+ /* kill the named pipe */
+ if (jpipeline->priv->name)
+ {
+ cpio_removeFile (jpipeline->priv->name);
+ g_free (jpipeline->priv->name);
+ jpipeline->priv->name = NULL;
+ }
+#endif /* WITHOUT_FILESYSTEM */
+}
+
+JNIEXPORT jboolean JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_create_1named_1pipe
+ (JNIEnv *env, jobject GstPipeline, jobject pointer)
+{
+#ifndef WITHOUT_FILESYSTEM
+ /*
+ * We get a temp name for the named pipe, create the named pipe and then
+ * set the relative field in the java class.
+ */
+ GstNativePipeline *jpipeline = NULL;
+ jstring *name = NULL;
+
+ jpipeline = (GstNativePipeline *) get_object_from_pointer (env, pointer,
+ pointerDataFID);
+ if (jpipeline == NULL)
+ return JNI_FALSE;
+
+ jpipeline->priv->name = create_name ();
+ if (jpipeline->priv->name == NULL)
+ return JNI_FALSE;
+
+ if (mkfifo (jpipeline->priv->name, 0600) < 0)
+ {
+ if (jpipeline->priv->name != NULL)
+ free (jpipeline->priv->name);
+ return JNI_FALSE;
+ }
+
+ /* now set the String field */
+ name = (*env)->NewStringUTF(env, jpipeline->priv->name);
+ if (name == NULL)
+ {
+ cpio_removeFile (jpipeline->priv->name);
+ if (jpipeline->priv->name != NULL)
+ free (jpipeline->priv->name);
+
+ return JNI_FALSE;
+ }
+
+ (*env)->SetObjectField(env, GstPipeline, nameFID, name);
+
+ return JNI_TRUE;
+
+#else /* not WITHOUT_FILESYSTEM */
+ return JNI_FALSE;
+#endif /* not WITHOUT_FILESYSTEM */
+}
+
+JNIEXPORT jint JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_available
+ (JNIEnv *env, jclass clazz, jobject pointer, jint mode)
+{
+ jint result = -1;
+
+#ifndef WITHOUT_FILESYSTEM
+
+ GstNativePipeline *jpipeline = NULL;
+ jpipeline = (GstNativePipeline *) get_object_from_pointer (env, pointer,
+ pointerDataFID);
+
+ if (mode == READ)
+ {
+ result = get_free_space (jpipeline->priv->fd);
+ }
+ else
+ {
+# if defined (FIONREAD)
+ if (ioctl (jpipeline->priv->fd, FIONREAD, &result) == -1)
+ g_warning("IMPLEMENT ME: ioctl failed");
+
+# else /* not defined (FIONREAD) */
+ g_warning("IMPLEMENT ME: !defined (FIONREAD");
+# endif /* defined (FIONREAD) */
+
+ } /* if (mode == READ) */
+
+#endif /* not WITHOUT_FILESYSTEM */
+
+ return result;
+}
+
+JNIEXPORT jlong JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_detect_1pipe_1size
+ (JNIEnv *env, jobject GstPipeline)
+{
+ detect_pipe_max ();
+
+ return GST_DETECTED_PIPE_CAPACITY;
+}
+
+/* exported library functions */
+/*
+static void gst_native_pipeline_clean (GstNativePipeline *self)
+{
+ JNIEnv *env = NULL;
+
+ env = gst_get_jenv (self->priv->vm);
+
+ (*env)->DeleteGlobalRef (env, self->priv->jni_pipeline);
+ (*env)->DeleteGlobalRef (env, self->priv->GstPipelineClass);
+ (*env)->DeleteGlobalRef (env, self->priv->PointerClass);
+
+ if (self->priv->pipeline != NULL)
+ gst_object_unref (GST_OBJECT (self->priv->pipeline));
+
+ if (self->priv->name)
+ {
+ cpio_removeFile (self->priv->name);
+ g_free (self->priv->name);
+ self->priv->name = NULL;
+ }
+
+ JCL_free (env, self->priv);
+ JCL_free (env, self);
+}
+*/
+void gst_native_pipeline_set_pipeline (GstNativePipeline *self,
+ GstElement *pipeline)
+{
+ if (self->priv->pipeline != NULL)
+ gst_object_unref (GST_OBJECT (self->priv->pipeline));
+
+ self->priv->pipeline = pipeline;
+}
+
+GstElement *gst_native_pipeline_get_pipeline (GstNativePipeline *self)
+{
+ return self->priv->pipeline;
+}
+
+char *gst_native_pipeline_get_pipeline_name (GstNativePipeline *self)
+{
+ return self->priv->name;
+}
+
+int gst_native_pipeline_get_pipeline_fd (GstNativePipeline *self)
+{
+ return self->priv->fd;
+}
+
+/* private functions */
+
+static void init_pointer_IDs (JNIEnv* env)
+{
+ jclass PointerClass = NULL;
+
+#if SIZEOF_VOID_P == 8
+ PointerClass = JCL_FindClass (env, "gnu/classpath/Pointer64");
+ if (PointerClass != NULL)
+ {
+ pointerDataFID = (*env)->GetFieldID (env, PointerClass, "data", "J");
+ pointerConstructorMID = (*env)->GetMethodID (env, PointerClass, "<init>",
+ "(J)V");
+ }
+#else
+# if SIZEOF_VOID_P == 4
+ PointerClass = JCL_FindClass (env, "gnu/classpath/Pointer32");
+ if (PointerClass != NULL)
+ {
+ pointerDataFID = (*env)->GetFieldID(env, PointerClass, "data", "I");
+ pointerConstructorMID = (*env)->GetMethodID(env, PointerClass,
+ "<init>", "(I)V");
+ }
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+}
+
+static jint get_free_space (int fd)
+{
+ jint result = -1;
+
+#if defined (FIONSPACE)
+
+ if (ioctl (fd, FIONSPACE, &result) == -1)
+ {
+ g_warning("IMPLEMENT ME: ioctl failed");
+ }
+
+#elif defined (FIONREAD)
+
+ if (ioctl (fd, FIONREAD, &result) == -1)
+ {
+ g_warning("IMPLEMENT ME: ioctl failed");
+ }
+
+ result = GST_DETECTED_PIPE_CAPACITY - result;
+
+#elif
+ g_warning("IMPLEMENT ME!!! - !defined (FIONSPACE), !defined (FIONREAD");
+
+#endif
+
+ return result;
+}
+
+static char *create_name (void)
+{
+ char *buffer = NULL;
+ char *tmp = NULL;
+
+ buffer = (char *) g_malloc0 (_GST_MALLOC_SIZE_);
+ if (buffer == NULL)
+ {
+ /* huston, we have a problem... */
+ return NULL;
+ }
+
+ tmp = tempnam (NULL, _GST_PIPELINE_PREFIX_);
+ if (tmp == NULL)
+ {
+ g_free (buffer);
+ return NULL;
+ }
+
+ g_snprintf (buffer, _GST_MALLOC_SIZE_, "%s%s", tmp, _GST_PIPELINE_SUFFIX_);
+ g_free (tmp);
+
+ return buffer;
+}
+
+static void detect_pipe_max (void)
+{
+ int read_fd;
+ int write_fd;
+
+ /* can be anything! */
+ char *character = "a";
+ char *pipe = NULL;
+
+ gboolean available = TRUE;
+ int w = 0;
+ long wrote = 0;
+
+ pipe = create_name ();
+ if (pipe == NULL)
+ {
+ g_warning ("can't create test pipe name");
+ return;
+ }
+
+ if (mkfifo (pipe, 0600) < 0)
+ {
+ g_warning ("unable to create test pipe...");
+ g_free (pipe);
+
+ return;
+ }
+
+ /* open both end of the pipe */
+ read_fd = open (pipe, O_RDONLY | O_NONBLOCK);
+ if (read_fd < 0)
+ {
+ cpio_removeFile (pipe);
+ g_free (pipe);
+
+ return;
+ }
+
+ write_fd = open (pipe, O_WRONLY | O_NONBLOCK);
+ if (write_fd < 0)
+ {
+ cpio_closeFile (write_fd);
+ cpio_removeFile (pipe);
+ g_free (pipe);
+
+ return;
+ }
+
+ while (available)
+ {
+ w = 0;
+
+ cpio_write (write_fd, character, 1, &w);
+ if (w < 0)
+ available = FALSE;
+ else
+ wrote += w;
+ }
+
+ GST_DETECTED_PIPE_CAPACITY = wrote;
+
+ cpio_closeFile (write_fd);
+ cpio_closeFile (read_fd);
+ cpio_removeFile (pipe);
+
+ g_free (pipe);
+}
--- /dev/null
+/*gst_native_pipeline.h - Header file for the GstClasspathPlugin
+ Copyright (C) 2007 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. */
+
+#ifndef __GST_NATIVE_PIPELINE_H__
+#define __GST_NATIVE_PIPELINE_H__
+
+#include <glib.h>
+
+#include <gst/gst.h>
+
+typedef struct _GstNativePipeline GstNativePipeline;
+typedef struct _GstNativePipelinePrivate GstNativePipelinePrivate;
+
+struct _GstNativePipeline
+{
+ /* instance members */
+ GstNativePipelinePrivate *priv;
+};
+
+void gst_native_pipeline_set_pipeline (GstNativePipeline *self,
+ GstElement *pipeline);
+
+GstElement *gst_native_pipeline_get_pipeline (GstNativePipeline *self);
+
+char *gst_native_pipeline_get_pipeline_name (GstNativePipeline *self);
+
+int gst_native_pipeline_get_pipeline_fd (GstNativePipeline *self);
+
+#endif /* __GST_NATIVE_PIPELINE_H__ */
--- /dev/null
+/*gst_peer.c - Common utility functions for the native peer.
+ Copyright (C) 2007 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. */
+
+#include <glib.h>
+
+#include <jni.h>
+#include "jcl.h"
+
+#include "gst_peer.h"
+
+JNIEnv *gst_get_jenv (JavaVM *vm)
+{
+ void *env = NULL;
+
+ if ((*vm)->GetEnv(vm, &env, JNI_VERSION_1_2) != JNI_OK)
+ {
+ if ((*vm)->AttachCurrentThreadAsDaemon(vm, &env, NULL) < 0)
+ {
+ g_warning ("GstNativePipeline:- env not attached");
+ return NULL;
+ }
+ }
+
+ return (JNIEnv *) env;
+}
+
+void *
+get_object_from_pointer (JNIEnv *env, jobject pointer, jfieldID pointerDataFID)
+{
+ void *_object = NULL;
+
+ if (env == NULL)
+ return NULL;
+
+ if ((*env)->IsSameObject(env, pointer, NULL) == JNI_TRUE)
+ return NULL;
+
+#if SIZEOF_VOID_P == 8
+ _object = (void *) (*env)->GetLongField(env, pointer, pointerDataFID);
+#else
+# if SIZEOF_VOID_P == 4
+ _object = (void *) (*env)->GetIntField(env, pointer, pointerDataFID);
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+
+ return _object;
+}
--- /dev/null
+/*gst_peer.h - Common utility functions for the native peer.
+ Copyright (C) 2007 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. */
+
+#include <jni.h>
+#include "jcl.h"
+
+#ifdef MAXPATHLEN
+# define _GST_MALLOC_SIZE_ MAXPATHLEN
+#else
+# define _GST_MALLOC_SIZE_ 1024
+#endif
+
+#define _GST_PIPELINE_PREFIX_ "cp-"
+#define _GST_PIPELINE_SUFFIX_ "-classpath-gst-audio"
+
+/**
+ * Return a reference to the object stored in this Pointer.
+ */
+void *
+get_object_from_pointer (JNIEnv *env, jobject pointer, jfieldID pointerDataFID);
+
+/**
+ * Return the JNIEnv valid under the current thread context.
+ */
+JNIEnv *gst_get_jenv (JavaVM *vm);
+++ /dev/null
-/*gstclasspathsrc.c - Class file for the GstClasspathPlugin
- Copyright (C) 2007 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * We don't really use version numbering here, we give it the same version
- * number of classpath, so that gstreamer is happy.
- * TODO: Maybe this should be moved in config.h instead?
- */
-#define CLASSPATH_GST_PLUGIN_VERSION PACKAGE_VERSION
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <gst/gst.h>
-#include <gst/base/gstbasesrc.h>
-#include <gst/base/gstpushsrc.h>
-
-#include <glib.h>
-#include <glib/gprintf.h>
-
-#include <gdk/gdk.h>
-
-#include "gstclasspathsrc.h"
-#include "gstinputstream.h"
-
-GST_DEBUG_CATEGORY_STATIC (gst_classpath_src_debug);
-#define GST_CAT_DEFAULT gst_classpath_src_debug
-
-enum
-{
- ARG_0,
- ARG_INPUTSTREAM
-};
-
-static const GstElementDetails gst_classpath_src_details =
-GST_ELEMENT_DETAILS ("ClasspathSrc",
- "Source/Network",
- "Read from a java input stream",
- "Mario Torre <neugens@limasoftware.net>");
-
-static GstStaticPadTemplate _template =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-/* ***** plugin init ***** */
-
-static void
-_do_init (GType filesrc_type __attribute__ ((unused)))
-{
- GST_DEBUG_CATEGORY_INIT (gst_classpath_src_debug, "classpathsrc",
- 0, "classpathsrc");
-}
-
-GST_BOILERPLATE_FULL (GstClasspathSrc, gst_classpath_src, GstPushSrc,
- GST_TYPE_PUSH_SRC, _do_init);
-
-static gboolean
-plugin_init (GstPlugin *plugin)
-{
- return gst_element_register (plugin, "classpathsrc",
- GST_RANK_NONE, GST_TYPE_CLASSPATH_SRC);
-}
-
-GST_PLUGIN_DEFINE_STATIC (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "classpathsrc",
- "Java InputStream Reader",
- plugin_init, CLASSPATH_GST_PLUGIN_VERSION,
- GST_LICENSE_UNKNOWN,
- "Classpath", "http://www.classpath.org/")
-
-/* ***** public class methods ***** */
-
-static void gst_classpath_src_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-
-static void gst_classpath_src_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gst_classpath_src_finalize (GObject *object);
-
-static gboolean gst_classpath_src_start (GstBaseSrc *basesrc);
-
-static gboolean gst_classpath_src_stop (GstBaseSrc *basesrc);
-
-static GstFlowReturn gst_classpath_src_create (GstPushSrc *src,
- GstBuffer **buffer);
-
-/* ***** public class methods: end ***** */
-
-static void
-gst_classpath_src_base_init (gpointer gclass)
-{
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&_template));
-
- gst_element_class_set_details (gstelement_class, &gst_classpath_src_details);
-}
-
-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);
-
- /* getter and setters */
-
- gobject_class->set_property = gst_classpath_src_set_property;
- gobject_class->get_property = gst_classpath_src_get_property;
-
- /* register properties */
- pspec = g_param_spec_pointer (GST_CLASSPATH_SRC_ISTREAM,
- "GstInputStream instance",
- "GstInputStream instance",
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class, ARG_INPUTSTREAM, pspec);
-
- /* register callbacks */
- gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_classpath_src_finalize);
-
- gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_classpath_src_start);
- gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_classpath_src_stop);
-
- gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_classpath_src_create);
-}
-
-/* ***** */
-
-static void
-gst_classpath_src_init (GstClasspathSrc *src,
- GstClasspathSrcClass * g_class __attribute__ ((unused)))
-{
- src->istream = NULL;
- src->read_position = 0;
-}
-
-static void
-gst_classpath_src_finalize (GObject *object)
-{
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-/* ************************************************************************** */
-
-static void
-gst_classpath_src_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GstClasspathSrc *src;
-
- g_return_if_fail (GST_IS_CLASSPATH_SRC (object));
-
- src = GST_CLASSPATH_SRC (object);
-
- GST_OBJECT_LOCK (src);
- switch (prop_id)
- {
- case ARG_INPUTSTREAM:
- {
- GST_STATE_LOCK (src);
- {
- GstState state;
- state = GST_STATE (src);
-
- if (state != GST_STATE_READY && state != GST_STATE_NULL)
- {
- GST_DEBUG_OBJECT (src, "setting location in wrong state");
- GST_STATE_UNLOCK (src);
- break;
- }
- }
- GST_STATE_UNLOCK (src);
-
- if (GST_IS_INPUT_STREAM (g_value_get_pointer (value)))
- {
- src->istream = g_value_get_pointer (value);
- }
- else
- {
- GST_INFO_OBJECT (src, "invalid instance of GstInputStream");
- }
- }
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
- GST_OBJECT_UNLOCK (src);
-}
-
-static void
-gst_classpath_src_get_property (GObject *object,
- guint prop_id __attribute__ ((unused)),
- GValue *value __attribute__ ((unused)),
- GParamSpec *pspec __attribute__ ((unused)))
-{
- /* TODO */
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-/* ************************************************************************** */
-
-static GstFlowReturn
-gst_classpath_src_create (GstPushSrc *basesrc,
- GstBuffer **buffer)
-{
- GstClasspathSrc *src;
- int read = -1;
-
- src = GST_CLASSPATH_SRC (basesrc);
-
- /* create the buffer */
- *buffer = gst_buffer_new_and_alloc (2048);
- if (*buffer == NULL)
- {
- return GST_FLOW_ERROR;
- }
-
- GST_BUFFER_SIZE (*buffer) = 0;
-
- GST_OBJECT_LOCK (src);
- read = gst_input_stream_read (src->istream, (int *) GST_BUFFER_DATA (*buffer), 0,
- 2048);
- GST_OBJECT_UNLOCK (src);
-
- if (G_UNLIKELY (read < 0))
- {
- gst_buffer_unref (*buffer);
- return GST_FLOW_UNEXPECTED;
- }
-
- GST_OBJECT_LOCK (src);
-
- GST_BUFFER_SIZE (*buffer) = read;
- GST_BUFFER_OFFSET (*buffer) = src->read_position;
- GST_BUFFER_OFFSET_END (*buffer) = src->read_position + read;
-
- src->read_position += read;
-
- GST_OBJECT_UNLOCK (src);
-
- gst_buffer_set_caps (*buffer, GST_PAD_CAPS (GST_BASE_SRC_PAD (src)));
-
- return GST_FLOW_OK;
-}
-
-static gboolean
-gst_classpath_src_start (GstBaseSrc *basesrc)
-{
- GstClasspathSrc *src;
-
- src = GST_CLASSPATH_SRC (basesrc);
-
- if (src->istream == NULL)
- {
- GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
- ("GstInputStream is still null. you need to pass a valid InputStream"));
-
- return FALSE;
- }
- GST_OBJECT_LOCK (src);
- src->read_position = 0;
- GST_OBJECT_UNLOCK (src);
-
- return TRUE;
-}
-
-static gboolean
-gst_classpath_src_stop (GstBaseSrc *basesrc __attribute__ ((unused)))
-{
- /* nothing to do */
- return TRUE;
-}
+++ /dev/null
-/*gstclasspathsrc.h - Header file for the GstClasspathPlugin
- Copyright (C) 2007 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. */
-
-#ifndef __GST_CLASSPATH_SRC_H__
-#define __GST_CLASSPATH_SRC_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstpushsrc.h>
-
-#include "gstinputstream.h"
-
-G_BEGIN_DECLS
-
-/* #defines don't like whitespacey bits */
-#define GST_TYPE_CLASSPATH_SRC (gst_classpath_src_get_type())
-
-#define GST_CLASSPATH_SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CLASSPATH_SRC,GstClasspathSrc))
-
-#define GST_CLASSPATH_SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CLASSPATH_SRC,GstClasspathSrcClass))
-
-#define GST_IS_CLASSPATH_SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CLASSPATH_SRC))
-
-#define GST_IS_CLASSPATH_SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CLASSPATH_SRC))
-
-typedef struct _GstClasspathSrc GstClasspathSrc;
-typedef struct _GstClasspathSrcClass GstClasspathSrcClass;
-
-struct _GstClasspathSrc
-{
- GstPushSrc element;
-
- /* TODO: move in a private structure */
- GstInputStream *istream;
- int read_position;
-};
-
-struct _GstClasspathSrcClass
-{
- GstPushSrcClass parent_class;
-};
-
-GType gst_classpath_src_get_type (void);
-
-/* exported properties */
-
-#define GST_CLASSPATH_SRC_ISTREAM "input-stream"
-
-G_END_DECLS
-
-#endif /* __GST_CLASSPATH_SRC_H__ */
+++ /dev/null
-/*gstinputstream.c - Header file for the GstClasspathPlugin
- Copyright (C) 2007 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. */
-
-#include <jni.h>
-#include <jcl.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <gdk/gdk.h>
-
-#include <glib.h>
-#include <glib/gprintf.h>
-
-#include "gstinputstream.h"
-
-struct _GstInputStreamPrivate
-{
- JavaVM *vm;
- jobject *reader;
-
- gboolean eof;
- guint8 *buffer;
- long size;
- long length;
-
- gboolean disposed;
-};
-
-#define INPUT_STREAM_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), GST_TYPE_INPUT_STREAM, GstInputStreamPrivate))
-
-/* properties */
-
-enum
-{
- ARG_0,
- ARG_JVM,
- ARG_READER
-};
-
-/* ***** */
-
-static JNIEnv *gst_input_stream_get_jenv(GstInputStream *self);
-
-static void gst_input_stream_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec);
-
-static void gst_input_stream_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gst_input_stream_instance_init (GTypeInstance *instance,
- gpointer g_class);
-
-static void gst_input_stream_class_init (gpointer g_class,
- gpointer g_class_data);
-
-static GObject *
-gst_input_stream_constructor (GType type, guint n_construct_properties,
- GObjectConstructParam *construct_properties);
-
-static void
-gst_input_stream_dispose (GObject *obj);
-
-static void
-gst_input_stream_finalize (GObject *obj);
-
-/* ************************************************************************** */
-
-/* class methods */
-
-int
-gst_input_stream_read (GstInputStream *self, int *data, int offset,
- int length)
-{
- /* TODO: cache */
- jmethodID _readID = NULL;
- jclass InputStream = NULL;
-
- JNIEnv *env = NULL;
-
- int ret = -1;
- jbyteArray buffer;
- jbyte *bytes = NULL;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return -1;
- }
-
- env = gst_input_stream_get_jenv (self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_read failed to get java env");
- return -1;
- }
-
- buffer = (*env)->NewByteArray (env, length);
- if (buffer == NULL)
- {
- g_warning ("GstInputStream::gst_input_stream_read called, failed");
- return -1;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _readID = (*env)->GetMethodID(env, InputStream, "read", "([BII)I");
- if (_readID == NULL)
- {
- (*env)->DeleteLocalRef(env, buffer);
- return -1;
- }
-
- ret = (*env)->CallIntMethod (env, self->priv->reader, _readID, buffer, 0,
- length);
- if (ret == -1)
- {
- (*env)->DeleteLocalRef(env, buffer);
- return ret;
- }
-
- bytes = (*env)->GetByteArrayElements (env, buffer, NULL);
-
- /* copy bytes and release */
- memcpy (data + offset, bytes, ret);
-
- (*env)->ReleaseByteArrayElements (env, buffer, bytes, 0);
- (*env)->DeleteLocalRef (env, buffer);
-
- return ret;
-}
-
-gboolean
-gst_input_stream_available (GstInputStream *self, guint64 *size)
-{
- /* TODO: caching */
-
- jmethodID _availableID = NULL;
- jclass InputStream = NULL;
- JNIEnv *env = NULL;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return FALSE;
- }
-
- env = gst_input_stream_get_jenv(self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_available failed to get java env");
- return FALSE;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _availableID = (*env)->GetMethodID(env, InputStream, "available", "()I");
- if (_availableID == NULL)
- {
- return FALSE;
- }
-
- *size = (*env)->CallIntMethod (env, self->priv->reader, _availableID);
-
- return TRUE;
-}
-
-void gst_input_stream_reset (GstInputStream *self)
-{
- jmethodID _resetID = NULL;
- jclass InputStream = NULL;
- JNIEnv *env = NULL;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return;
- }
-
- env = gst_input_stream_get_jenv(self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_reset failed to get java env");
- return;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _resetID = (*env)->GetMethodID(env, InputStream, "reset", "()V");
- if (_resetID == NULL)
- {
- return;
- }
-
- (*env)->CallVoidMethod (env, self->priv->reader, _resetID);
-}
-
-long gst_input_stream_skip (GstInputStream *self, long size)
-{
- jmethodID _seekID = NULL;
- jclass InputStream = NULL;
- JNIEnv *env = NULL;
-
- long skipped = -1;
-
- if (self->priv->disposed || self->priv->vm == NULL ||
- self->priv->reader == NULL)
- {
- return skipped;
- }
-
- env = gst_input_stream_get_jenv(self);
- if (env == NULL)
- {
- g_warning("GstInputStream::gst_input_stream_skip failed to get java env");
- return size;
- }
-
- InputStream = (*env)->GetObjectClass(env, self->priv->reader);
- _seekID = (*env)->GetMethodID(env, InputStream, "skip", "(J)J");
- if (_seekID == NULL)
- {
- return skipped;
- }
-
- size = (*env)->CallIntMethod (env, self->priv->reader, _seekID, size);
- if (size != 0)
- {
- return skipped;
- }
-
- return skipped;
-}
-
-gboolean gst_input_stream_can_seek (GstInputStream *self)
-{
- if (gst_input_stream_skip(self, 0) != 0)
- {
- g_warning ("GstInputStream::gst_input_stream_can_seek CANNOT seek");
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* ************************************************************************** */
-
-/* getter and setter */
-
-static void
-gst_input_stream_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GstInputStream *self = GST_INPUT_STREAM (object);
-
- switch (property_id)
- {
- case ARG_JVM:
- {
- self->priv->vm = g_value_get_pointer(value);
- }
- break;
-
- case ARG_READER:
- {
- self->priv->reader = g_value_get_pointer(value);
- }
- break;
-
- default:
- /* We don't have any other property... */
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object,property_id,pspec);
- break;
- } /* switch */
-}
-
-static void
-gst_input_stream_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GstInputStream *self = GST_INPUT_STREAM (object);
-
- switch (property_id)
- {
- case ARG_JVM:
- {
- g_value_set_pointer (value, self->priv->vm);
- }
- break;
-
- case ARG_READER:
- {
- g_value_set_pointer (value, self->priv->reader);
- }
- break;
-
- default:
- /* We don't have any other property... */
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object,property_id,pspec);
- break;
- } /* switch */
-}
-
-/* ************************************************************************** */
-
-static void
-gst_input_stream_instance_init (GTypeInstance *instance,
- gpointer g_class __attribute__ ((unused)))
-{
- GstInputStream *self = GST_INPUT_STREAM (instance);
-
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GST_TYPE_INPUT_STREAM,
- GstInputStreamPrivate);
-
- self->priv->vm = NULL;
- self->priv->reader = NULL;
- self->priv->disposed = FALSE;
- self->priv->eof = FALSE;
- self->priv->buffer = NULL;
- self->priv->size = 0;
- self->priv->length = 0;
-}
-
-static void
-gst_input_stream_class_init (gpointer g_class,
- gpointer g_class_data __attribute__ ((unused)))
-{
- GObjectClass *gobject_class;
- GstInputStreamClass *klass;
- GObjectClass *parent_class;
-
- GParamSpec *pspec;
-
- gobject_class = G_OBJECT_CLASS (g_class);
- klass = GST_INPUT_STREAM_CLASS (g_class);
- gobject_class = G_OBJECT_CLASS (g_class);
-
- g_type_class_add_private (klass, sizeof (GstInputStreamPrivate));
-
- gobject_class->set_property = gst_input_stream_set_property;
- gobject_class->get_property = gst_input_stream_get_property;
- gobject_class->dispose = gst_input_stream_dispose;
- gobject_class->finalize = gst_input_stream_finalize;
- gobject_class->constructor = gst_input_stream_constructor;
-
- parent_class = g_type_class_peek_parent (klass);
-
- /* register properties */
- pspec = g_param_spec_pointer (GST_ISTREAM_JVM,
- "Set the java environment property",
- "Set the java environment property",
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class, ARG_JVM, pspec);
-
- pspec = g_param_spec_pointer (GST_ISTREAM_READER,
- "Set the java reader property",
- "Set the java reader property",
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class, ARG_READER, pspec);
-
-}
-
-/* class constructors */
-
-static GObject *
-gst_input_stream_constructor (GType type, guint n_construct_properties,
- GObjectConstructParam *construct_properties)
-{
- GObject *obj;
- GObjectClass *parent_class;
-
- /* parent */
- GstInputStreamClass *klass;
- klass = GST_INPUT_STREAM_CLASS (g_type_class_peek (GST_TYPE_INPUT_STREAM));
- parent_class = g_type_class_peek_parent (klass);
- obj = parent_class->constructor (type, n_construct_properties,
- construct_properties);
- return obj;
-}
-
-static void
-gst_input_stream_dispose (GObject *obj)
-{
- GObjectClass *parent_class;
- GstInputStream *self = GST_INPUT_STREAM (obj);
- if (self->priv->disposed)
- {
- /* If dispose did already run, return. */
- return;
- }
-
- /* Make sure dispose does not run twice. */
- self->priv->disposed = TRUE;
-
- if (self->priv->buffer != NULL)
- g_free(self->priv->buffer);
-
- /* Chain up to the parent class */
- parent_class = g_type_class_peek_parent (GST_INPUT_STREAM_CLASS (obj));
- G_OBJECT_CLASS (parent_class)->dispose (obj);
-}
-
-static void
-gst_input_stream_finalize (GObject *obj)
-{
- /* nothing else to do */
- GObjectClass *parent_class =
- g_type_class_peek_parent (GST_INPUT_STREAM_CLASS (obj));
- G_OBJECT_CLASS (parent_class)->finalize (obj);
-}
-
-static JNIEnv *
-gst_input_stream_get_jenv(GstInputStream *self)
-{
- void *env = NULL;
-
- if ((*self->priv->vm)->GetEnv(self->priv->vm, &env, JNI_VERSION_1_2) != JNI_OK)
- {
- if ((*self->priv->vm)->AttachCurrentThreadAsDaemon(self->priv->vm,
- &env, NULL) < 0)
- {
- g_warning ("GstInputStream:- env not attached");
- return NULL;
- }
- }
-
- return (JNIEnv *) env;
-}
-
-GType gst_input_stream_get_type (void)
-{
- static GType type = 0;
-
- if (type == 0)
- {
- static const GTypeInfo info = {
- sizeof (GstInputStreamClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- gst_input_stream_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GstInputStream),
- 0, /* n_preallocs */
- gst_input_stream_instance_init /* instance_init */
- };
-
- type = g_type_register_static (G_TYPE_OBJECT,
- "GstInputStreamType",
- &info, 0);
- }
-
- return type;
-}
+++ /dev/null
-/*gstinputstream.h - Header file for the GstClasspathPlugin
- Copyright (C) 2007 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. */
-
-#ifndef __GST_INPUT_STREAM_H__
-#define __GST_INPUT_STREAM_H__
-
-#include <glib-object.h>
-
-/* TODO: is a gobject overkill for that? */
-
-G_BEGIN_DECLS
-
-/* #defines don't like whitespacey bits */
-#define GST_TYPE_INPUT_STREAM (gst_input_stream_get_type())
-
-#define GST_INPUT_STREAM(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_INPUT_STREAM,GstInputStream))
-
-#define GST_INPUT_STREAM_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_INPUT_STREAM,GstInputStreamClass))
-
-#define GST_IS_INPUT_STREAM(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_INPUT_STREAM))
-
-#define GST_IS_INPUT_STREAM_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_INPUT_STREAM))
-
-typedef struct _GstInputStream GstInputStream;
-typedef struct _GstInputStreamClass GstInputStreamClass;
-typedef struct _GstInputStreamPrivate GstInputStreamPrivate;
-
-struct _GstInputStream
-{
- GObject parent;
-
- /* instance members */
- GstInputStreamPrivate *priv;
-};
-
-struct _GstInputStreamClass
-{
- GObjectClass parent_class;
-};
-
-GType gst_input_stream_get_type (void);
-
-int gst_input_stream_read (GstInputStream *self, int *data, int offset,
- int length);
-
-gboolean gst_input_stream_available (GstInputStream *self, guint64 *size);
-
-gboolean gst_input_stream_can_seek (GstInputStream *self);
-
-long gst_input_stream_skip (GstInputStream *self, long size);
-
-void gst_input_stream_reset (GstInputStream *self);
-
-/* exported properties */
-
-#define GST_ISTREAM_JVM "vm"
-#define GST_ISTREAM_READER "reader"
-
-G_END_DECLS
-
-#endif /* __GST_INPUT_STREAM_H__ */
--- /dev/null
+/* gstreamer_io_peer.c -- Implements native methods for class
+ GStreamerNativePeer
+ Copyright (C) 2007 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. */
+
+#include <stdio.h>
+#include <string.h>
+
+#include <jni.h>
+
+#include <glib.h>
+#include <glib/gprintf.h>
+
+#include <gdk/gdk.h>
+
+#include <gst/gst.h>
+
+#include "jcl.h"
+
+#include "gst_peer.h"
+
+#include "gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h"
+
+#include "gst_classpath_src.h"
+#include "gst_input_stream.h"
+
+/* for caching */
+static jfieldID fileFID = NULL;
+static jfieldID pointerDataID = NULL;
+
+static jfieldID mimetypeFID = NULL;
+static jfieldID endiannessFID = NULL;
+static jfieldID channelsFID = NULL;
+static jfieldID rateFID = NULL;
+static jfieldID widthFID = NULL;
+static jfieldID depthFID = NULL;
+static jfieldID isSignedFID = NULL;
+static jfieldID nameFID = NULL;
+static jfieldID layerFID = NULL;
+static jfieldID bitrateFID = NULL;
+static jfieldID framedFID = NULL;
+static jfieldID typeFID = NULL;
+
+typedef struct _AudioProperties AudioProperties;
+struct _AudioProperties
+{
+ /*
+ * NOTE: descriptions of the properties are taken from:
+ * http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/section-types-definitions.html#table-audio-types
+ */
+
+ /* decoder name */
+ const char *name;
+
+ /* audio endiannes */
+ const char *endianness;
+
+ /* header size */
+ const char *header_size;
+
+ /* mime */
+ const char *mimetype;
+
+ /* The sample rate of the data, in samples (per channel) per second */
+ const char *samplerate;
+
+ /* The number of channels of audio data */
+ const char *channels;
+
+ const char *layer;
+
+ const char *bitrate;
+
+ const char *framed;
+
+ /*
+ * Defines if the values of the integer samples are signed or not.
+ * Signed samples use one bit to indicate sign (negative or positive)
+ * of the value. Unsigned samples are always positive.
+ */
+ const char *signess;
+
+ /* */
+ const char *rate;
+
+ /* Number of bits allocated per sample. */
+ const char *width;
+
+ /*
+ * The number of bits used per sample.
+ * If the depth is less than the width, the low bits are assumed to be the
+ * ones used. For example, a width of 32 and a depth of 24 means that
+ * each sample is stored in a 32 bit word, but only the low
+ * 24 bits are actually used.
+ */
+ const char *depth;
+
+ /*
+ * This is set in the case of the mpeg files.
+ */
+ const char *type;
+
+ gboolean done;
+};
+
+/* ***** PRIVATE FUNCTIONS DECLARATION ***** */
+
+static gboolean
+set_strings (JNIEnv *env, const AudioProperties *properties, jobject header);
+
+static gboolean
+typefind_callback(GstElement *typefind, guint probability, const GstCaps *caps,
+ gpointer data);
+
+static void
+element_added (GstBin *bin, GstElement *element, gpointer data);
+
+static void
+new_decoded_pad (GstElement *decoder, GstPad *pad,
+ gboolean last, gpointer data);
+
+static gboolean
+fill_info (GstElement *decoder, AudioProperties *properties);
+
+static gchar *
+get_string_property (const GstStructure *structure, const gchar *property);
+
+static gchar *
+get_boolean_property (const GstStructure *structure, const gchar *property);
+
+static gboolean
+set_string (JNIEnv *env, jobject header, jfieldID fieldID,
+ const gchar *property);
+
+static void
+free_properties (AudioProperties *properties);
+
+static void
+reset_properties (AudioProperties *properties);
+
+static jboolean process_audio (GstElement *source, JNIEnv *env, jobject header);
+
+/* ***** END: PRIVATE FUNCTIONS DECLARATION ***** */
+
+/* ***** NATIVE FUNCTIONS ***** */
+
+JNIEXPORT void JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_init_1id_1cache
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)))
+{
+ jclass pointerClass = NULL;
+ jclass GstHeader = NULL;
+
+ GstHeader = JCL_FindClass(env, "gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer$GstHeader");
+ fileFID = (*env)->GetFieldID(env, GstHeader, "file", "Ljava/lang/String;");
+
+ mimetypeFID = (*env)->GetFieldID(env, GstHeader, "mimetype",
+ "Ljava/lang/String;");
+ endiannessFID = (*env)->GetFieldID(env, GstHeader, "endianness",
+ "Ljava/lang/String;");
+ channelsFID = (*env)->GetFieldID(env, GstHeader, "channels",
+ "Ljava/lang/String;");
+ rateFID = (*env)->GetFieldID(env, GstHeader, "rate", "Ljava/lang/String;");
+ widthFID = (*env)->GetFieldID(env, GstHeader, "width", "Ljava/lang/String;");
+ depthFID = (*env)->GetFieldID(env, GstHeader, "depth", "Ljava/lang/String;");
+ isSignedFID = (*env)->GetFieldID(env, GstHeader, "isSigned",
+ "Ljava/lang/String;");
+ nameFID = (*env)->GetFieldID(env, GstHeader, "name", "Ljava/lang/String;");
+ layerFID = (*env)->GetFieldID(env, GstHeader, "layer", "Ljava/lang/String;");
+ bitrateFID = (*env)->GetFieldID(env, GstHeader, "bitrate",
+ "Ljava/lang/String;");
+ framedFID = (*env)->GetFieldID(env, GstHeader, "framed",
+ "Ljava/lang/String;");
+ typeFID = (*env)->GetFieldID(env, GstHeader, "type", "Ljava/lang/String;");
+
+#if SIZEOF_VOID_P == 8
+ pointerClass = JCL_FindClass (env, "gnu/classpath/Pointer64");
+ if (pointerClass != NULL)
+ {
+ pointerDataID = (*env)->GetFieldID (env, pointerClass, "data", "J");
+ }
+#else
+# if SIZEOF_VOID_P == 4
+ pointerClass = JCL_FindClass (env, "gnu/classpath/Pointer32");
+ if (pointerClass != NULL)
+ {
+ pointerDataID = (*env)->GetFieldID(env, pointerClass, "data", "I");
+ }
+# else
+# error "Pointer size is not supported."
+# endif /* SIZEOF_VOID_P == 4 */
+#endif /* SIZEOF_VOID_P == 8 */
+
+}
+
+JNIEXPORT jboolean JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1stream
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject header,
+ jobject pointer)
+{
+ GstInputStream *istream = NULL;
+ GstElement *source = NULL;
+ gboolean result = JNI_FALSE;
+
+ if (header == NULL)
+ return JNI_FALSE;
+
+ if (pointer == NULL)
+ return JNI_FALSE;
+
+ gst_init (NULL, NULL);
+
+ istream = (GstInputStream *) get_object_from_pointer (env, pointer,
+ pointerDataID);
+ if (istream == NULL)
+ return JNI_FALSE;
+
+ /* init gstreamer */
+ gst_init (NULL, NULL);
+
+ /* SOURCE */
+ source = gst_element_factory_make ("classpathsrc", "source");
+ if (source == NULL)
+ {
+ g_warning ("unable to create a source");
+ return JNI_FALSE;
+ }
+ g_object_set (G_OBJECT (source), GST_CLASSPATH_SRC_ISTREAM, istream, NULL);
+
+ result = process_audio (source, env, header);
+
+ return result;
+}
+
+JNIEXPORT jboolean JNICALL
+Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1file
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject header)
+{
+ /* source file */
+ const char *file = NULL;
+
+ /* GStreamer elements */
+ GstElement *source = NULL;
+
+ jboolean result = JNI_FALSE;
+
+ /* java fields */
+ jstring _file = NULL;
+
+ _file = (*env)->GetObjectField(env, header, fileFID);
+ file = JCL_jstring_to_cstring (env, _file);
+ if (file == NULL)
+ {
+ return JNI_FALSE;
+ }
+
+ gst_init (NULL, NULL);
+
+ /* create the source element, will be used to read the file */
+ source = gst_element_factory_make ("filesrc", "source");
+ if (source == NULL)
+ {
+ JCL_free_cstring (env, _file, file);
+ return JNI_FALSE;
+ }
+
+ /* set the file name */
+ g_object_set (G_OBJECT (source), "location", file, NULL);
+
+ result = process_audio (source, env, header);
+
+ /* free stuff */
+ JCL_free_cstring (env, _file, file);
+
+ return result;
+}
+
+/* ***** END: NATIVE FUNCTIONS ***** */
+
+/* ***** PRIVATE FUNCTIONS IMPLEMENTATION ***** */
+
+static jboolean process_audio (GstElement *source, JNIEnv *env, jobject header)
+{
+ /* will contain the properties we need to put into the given GstHeader */
+ AudioProperties *properties = NULL;
+
+ /* GStreamer elements */
+ GstElement *pipeline = NULL;
+ GstElement *decoder = NULL;
+
+ GstElement *typefind = NULL;
+
+ GstStateChangeReturn res;
+
+ jboolean result = JNI_FALSE;
+
+ properties = (AudioProperties *) g_malloc0 (sizeof (AudioProperties));
+ if (properties == NULL)
+ {
+ return result;
+ }
+ reset_properties(properties);
+
+ /*
+ * create the decoder element, this will decode the stream and retrieve
+ * its properties.
+ * We connect a signal to this element, to be informed when it is done
+ * in decoding the stream and to get the needed informations about the
+ * audio file.
+ */
+ decoder = gst_element_factory_make ("decodebin", "decoder");
+ if (decoder == NULL)
+ {
+ free_properties(properties);
+ return result;
+ }
+
+ /* now, we create a pipeline and fill it with the other elements */
+ pipeline = gst_pipeline_new ("pipeline");
+ if (pipeline == NULL)
+ {
+ gst_object_unref (GST_OBJECT (decoder));
+ free_properties(properties);
+ return result;
+ }
+
+ g_signal_connect (decoder, "new-decoded-pad", G_CALLBACK (new_decoded_pad),
+ pipeline);
+ g_signal_connect (G_OBJECT (decoder), "element-added",
+ G_CALLBACK (element_added), properties);
+
+ /*
+ * we get the typefind from the decodebin to catch the additional properties
+ * that the decodebin does not expose to us
+ */
+ typefind = gst_bin_get_by_name (GST_BIN (decoder), "typefind");
+ if (typefind != NULL)
+ {
+ /*
+ * NOTE: the above is not a typo, we can live without the typefind,
+ * just, our stream detection will not be as accurate as we would.
+ * Anyway, if this fails, there is some problem, probabily a memory
+ * error.
+ */
+ g_signal_connect (G_OBJECT (typefind), "have-type",
+ G_CALLBACK (typefind_callback), properties);
+ }
+
+ gst_bin_add_many (GST_BIN (pipeline), source, decoder, NULL);
+ gst_element_link (source, decoder);
+
+ /*
+ * now, we set the pipeline playing state to pause and traverse it
+ * to get the info we need.
+ */
+
+ res = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+ if (res == GST_STATE_CHANGE_FAILURE)
+ {
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (GST_OBJECT (pipeline));
+
+ free_properties(properties);
+
+ return result;
+ }
+
+ res = gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
+ if (res != GST_STATE_CHANGE_SUCCESS)
+ {
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (GST_OBJECT (pipeline));
+
+ free_properties(properties);
+
+ return result;
+ }
+
+ if (fill_info (decoder, properties))
+ {
+ result = set_strings (env, properties, header);
+ }
+
+ /* free stuff */
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+
+ free_properties (properties);
+
+ gst_object_unref (GST_OBJECT (pipeline));
+
+ return result;
+}
+
+
+static gboolean typefind_callback(GstElement *typefind __attribute__ ((unused)),
+ guint probability __attribute__ ((unused)),
+ const GstCaps *caps,
+ gpointer data)
+{
+ GstStructure *structure = NULL;
+ AudioProperties *properties = NULL;
+
+ const char *mpeg = NULL;
+
+ properties = (AudioProperties *) data;
+
+ structure = gst_caps_get_structure (caps, 0);
+
+ /* MIMETYPE */
+ properties->mimetype = gst_structure_get_name (structure);
+ mpeg = get_string_property(structure, "mpegversion");
+
+ if (mpeg != NULL)
+ {
+ properties->layer = get_string_property(structure, "layer");
+ properties->type = (gchar *) g_malloc0 (_GST_MALLOC_SIZE_);
+ g_snprintf ((gpointer) properties->type, _GST_MALLOC_SIZE_,
+ "MPEG%sV%s", mpeg,
+ properties->layer);
+
+ g_free ((gpointer) mpeg);
+ }
+
+ return TRUE;
+}
+
+static void
+new_decoded_pad (GstElement *decoder __attribute__ ((unused)),
+ GstPad *pad,
+ gboolean last __attribute__ ((unused)),
+ gpointer data)
+{
+ GstElement *pipeline = NULL;
+ GstElement *fakesink = NULL;
+ GstPad *sinkpad = NULL;
+
+ pipeline = (GstElement *) data;
+ if (pipeline == NULL)
+ return;
+
+ fakesink = gst_element_factory_make ("fakesink", NULL);
+ if (fakesink == NULL)
+ return;
+
+ gst_bin_add (GST_BIN (pipeline), fakesink);
+ sinkpad = gst_element_get_pad (fakesink, "sink");
+ if (GST_PAD_LINK_FAILED (gst_pad_link (pad, sinkpad)))
+ {
+ gst_bin_remove (GST_BIN (pipeline), fakesink);
+ }
+ else
+ {
+ gst_element_set_state (fakesink, GST_STATE_PAUSED);
+ }
+}
+
+static gboolean
+set_strings (JNIEnv *env, const AudioProperties *properties, jobject header)
+{
+ gboolean result = FALSE;
+
+ /*
+ * we only need at least one of them to be sure we can handle this
+ * kind of audio data.
+ */
+
+ /* now, map our properties to the java class */
+ set_string (env, header, mimetypeFID, properties->mimetype);
+
+ if (set_string (env, header, endiannessFID, properties->endianness))
+ result = JNI_TRUE;
+
+ if (set_string (env, header, channelsFID, properties->channels))
+ result = JNI_TRUE;
+
+ if (set_string (env, header, rateFID, properties->rate))
+ result = JNI_TRUE;
+
+ if (set_string (env, header, widthFID, properties->width))
+ result = JNI_TRUE;
+
+ if (set_string (env, header, depthFID, properties->depth))
+ result = JNI_TRUE;
+
+ if (set_string (env, header, isSignedFID, properties->signess))
+ result = JNI_TRUE;
+
+ if (set_string (env, header, nameFID, properties->name))
+ result = JNI_TRUE;
+
+ /* non primary properties */
+ set_string (env, header, layerFID, properties->layer);
+ set_string (env, header, bitrateFID, properties->bitrate);
+ set_string (env, header, framedFID, properties->framed);
+ set_string (env, header, typeFID, properties->type);
+
+ return result;
+}
+
+static gboolean fill_info (GstElement *decoder, AudioProperties *properties)
+{
+ GstIterator *it = NULL;
+ gpointer data = NULL;
+ gboolean result = FALSE;
+
+ it = gst_element_iterate_src_pads (decoder);
+ while (gst_iterator_next (it, &data) == GST_ITERATOR_OK)
+ {
+ GstPad *pad = GST_PAD (data);
+ GstCaps *caps;
+
+ GstStructure *structure;
+
+ const gchar *caps_string = NULL;
+
+ caps = gst_pad_get_caps (pad);
+ caps_string = gst_caps_to_string (caps);
+
+ if (g_str_has_prefix (caps_string, "video"))
+ {
+ /* no video support, this is an audio library */
+
+ g_free ((gpointer) caps_string);
+ gst_caps_unref (caps);
+ gst_object_unref (pad);
+
+ continue;
+ }
+
+ g_free ((gpointer) caps_string);
+
+ structure = gst_caps_get_structure (GST_CAPS (caps), 0);
+
+ /* fill the properties we need */
+
+ /* SIGNESS */
+ properties->signess = get_boolean_property(structure, "signed");
+ if (properties->signess != NULL)
+ {
+ result = TRUE;
+ }
+
+ /* ENDIANNESS */
+ properties->endianness = get_string_property(structure, "endianness");
+ if (properties->endianness != NULL)
+ {
+ result = TRUE;
+ }
+
+ /* CHANNELS */
+ properties->channels = get_string_property(structure, "channels");
+ if (properties->channels != NULL)
+ {
+ result = TRUE;
+ }
+
+ /* RATE */
+ properties->rate = get_string_property(structure, "rate");
+ if (properties->rate != NULL)
+ {
+ result = TRUE;
+ }
+
+ /* WIDTH */
+ properties->width = get_string_property(structure, "width");
+ if (properties->width != NULL)
+ {
+ result = TRUE;
+ }
+
+ /* DEPTH */
+ properties->depth = get_string_property(structure, "depth");
+ if (properties->depth != NULL)
+ {
+ result = TRUE;
+ }
+
+ gst_caps_unref (caps);
+ gst_object_unref (pad);
+ }
+
+ return result;
+}
+
+static void
+free_properties (AudioProperties *properties __attribute__ ((unused)))
+{
+ /* FIXME this causes a segfault, a string not allocated by us? double free? */
+ /*
+ if (properties->name != NULL) g_free((gpointer) properties->name);
+ if (properties->endianness != NULL) g_free((gpointer) properties->endianness);
+ if (properties->channels != NULL) g_free((gpointer) properties->channels);
+ if (properties->rate != NULL) g_free((gpointer) properties->rate);
+ if (properties->width != NULL) g_free((gpointer) properties->width);
+ if (properties->depth != NULL) g_free((gpointer) properties->depth);
+ if (properties->layer != NULL) g_free((gpointer) properties->layer);
+ if (properties->bitrate != NULL) g_free((gpointer) properties->bitrate);
+ if (properties->framed != NULL) g_free((gpointer) properties->framed);
+
+ if (properties != NULL) g_free ((gpointer) properties);
+ */
+}
+
+static void reset_properties (AudioProperties *properties)
+{
+ properties->done = FALSE;
+ properties->signess = FALSE;
+ properties->name = NULL;
+ properties->endianness = NULL;
+ properties->channels = NULL;
+ properties->rate = NULL;
+ properties->width = NULL;
+ properties->depth = NULL;
+ properties->layer = NULL;
+ properties->bitrate = NULL;
+ properties->framed = NULL;
+}
+
+static gchar *get_string_property (const GstStructure *structure,
+ const gchar *property)
+{
+ int props = 0;
+ gchar *result = NULL;
+
+ if (property == NULL)
+ {
+ return NULL;
+ }
+
+ /* we don't need more */
+ result = (gchar *) g_malloc0 (_GST_MALLOC_SIZE_);
+ if (result == NULL)
+ {
+ /* huston, we have a problem here... */
+ return NULL;
+ }
+
+ if (gst_structure_get_int (structure, property, &props))
+ {
+ g_snprintf (result, _GST_MALLOC_SIZE_, "%d", props);
+ }
+ else
+ {
+ g_free ((gpointer) result);
+ return NULL;
+ }
+
+ return result;
+}
+
+static gchar *get_boolean_property (const GstStructure *structure,
+ const gchar *property)
+{
+ gchar *result = NULL;
+ gboolean props = FALSE;
+
+ result = (gchar *) g_malloc0 (_GST_MALLOC_SIZE_);
+ if (result == NULL)
+ {
+ /* huston, we have a problem here... */
+ return NULL;
+ }
+
+ if (gst_structure_get_boolean (structure, property, &props))
+ {
+ g_snprintf (result, _GST_MALLOC_SIZE_, "%s", (props ? "true" : "false" ));
+ }
+ else
+ {
+ g_free ((gpointer) result);
+ return NULL;
+ }
+
+ return result;
+}
+
+static gboolean set_string (JNIEnv *env, jobject header, jfieldID fieldID,
+ const gchar *property)
+{
+ jstring property_string_field = NULL;
+
+ if (property == NULL || header == NULL)
+ {
+ return JNI_FALSE;
+ }
+
+ property_string_field = (*env)->NewStringUTF(env, property);
+ if (property_string_field == NULL)
+ {
+ return JNI_FALSE;
+ }
+
+ (*env)->SetObjectField(env, header, fieldID, property_string_field);
+
+ return JNI_TRUE;
+}
+
+static void element_added (GstBin *bin, GstElement *element, gpointer data)
+{
+ GstElementFactory *factory;
+
+ factory = gst_element_get_factory (element);
+ ((AudioProperties *) data)->name = gst_element_factory_get_longname (factory);
+}
+
+/* ***** END: PRIVATE FUNCTIONS IMPLEMENTATION ***** */
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
#include "gnu_java_awt_peer_gtk_CairoGraphics2D.h"
#include <gdk/gdktypes.h>
#include <gdk/gdkprivate.h>
-#include <gdk/gdkx.h>
#include <cairo-ft.h>
-#include <cairo-xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include "jcl.h"
#include "gtkpeer.h"
-#include <cairo-xlib.h>
-#include <gdk/gdkx.h>
#include "gnu_java_awt_peer_gtk_CairoSurface.h"
#include "cairographics2d.h"
#include "jcl.h"
#include "gtkpeer.h"
-#include <cairo-xlib.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkprivate.h>
-#include <gdk/gdkx.h>
-#include <X11/extensions/Xrender.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf/gdk-pixdata.h>
#include <cairo-ft.h>
-#include <cairo-xlib.h>
#include <stdio.h>
#include <stdlib.h>
+#if HAVE_XRENDER
+#include <gdk/gdkx.h>
+#include <X11/extensions/Xrender.h>
+#endif
+
#include "gnu_java_awt_peer_gtk_ComponentGraphics.h"
#include "cairographics2d.h"
{
gdk_threads_enter ();
- XFlush (GDK_DISPLAY ());
+ gdk_display_flush (gdk_display_get_default ());
flush_scheduled = 0;
gdk_threads_leave ();
{
#if HAVE_XRENDER
int ev = 0, err = 0;
- if( XRenderQueryExtension (GDK_DISPLAY (), &ev, &err) )
+ if( XRenderQueryExtension (GDK_DISPLAY(), &ev, &err) )
return JNI_TRUE;
#endif
return JNI_FALSE;
Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState
(JNIEnv *env, jobject obj __attribute__ ((unused)), jobject peer)
{
- Drawable draw;
- Display * dpy;
- Visual * vis;
GdkDrawable *drawable;
- cairo_surface_t *surface;
- GdkWindow *win;
- GtkWidget *widget = NULL;
+ GtkWidget *widget;
int width, height;
cairo_t *cr;
void *ptr;
widget = GTK_WIDGET (ptr);
g_assert (widget != NULL);
- cp_gtk_grab_current_drawable (widget, &drawable, &win);
+ drawable = widget->window;
g_assert (drawable != NULL);
width = widget->allocation.width;
height = widget->allocation.height;
- g_assert (drawable != NULL);
+ cr = gdk_cairo_create(drawable);
- draw = gdk_x11_drawable_get_xid(drawable);
- g_assert (draw != (XID) 0);
-
- dpy = gdk_x11_drawable_get_xdisplay(drawable);
- g_assert (dpy != NULL);
-
- vis = gdk_x11_visual_get_xvisual(gdk_drawable_get_visual(drawable));
- g_assert (vis != NULL);
-
- surface = cairo_xlib_surface_create (dpy, draw, vis, width, height);
- g_assert (surface != NULL);
-
- cr = cairo_create (surface);
g_assert(cr != NULL);
- cairo_surface_destroy(surface);
gdk_threads_leave();
JNIEXPORT jlong JNICALL
Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile
(JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
- jlong ptr, jint width, jint height)
+ jlong ptr)
{
- Drawable draw;
- Display * dpy;
- Visual * vis;
GdkDrawable *drawable;
- cairo_surface_t *surface;
cairo_t *cr;
gdk_threads_enter();
drawable = JLONG_TO_PTR(GdkDrawable, ptr);
g_assert (drawable != NULL);
- draw = gdk_x11_drawable_get_xid(drawable);
- g_assert (draw != (XID) 0);
-
- dpy = gdk_x11_drawable_get_xdisplay(drawable);
- g_assert (dpy != NULL);
-
- vis = gdk_x11_visual_get_xvisual(gdk_drawable_get_visual(drawable));
- g_assert (vis != NULL);
-
- surface = cairo_xlib_surface_create (dpy, draw, vis, width, height);
- g_assert (surface != NULL);
-
- cr = cairo_create (surface);
+ cr = gdk_cairo_create (drawable);
g_assert(cr != NULL);
- cairo_surface_destroy(surface);
gdk_threads_leave();
#include "jcl.h"
#include "gtkpeer.h"
-#include <cairo-xlib.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkprivate.h>
-#include <gdk/gdkx.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf/gdk-pixdata.h>
#include <cairo-ft.h>
-#include <cairo-xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include "gtkpeer.h"
#include "gnu_java_awt_peer_gtk_GdkRobotPeer.h"
+
+#ifdef HAVE_XTEST
#include <gdk/gdkx.h>
#include <X11/extensions/XTest.h>
+#endif
+
+#ifdef HAVE_XTEST
static int
awt_button_mask_to_num (int buttons)
return 0;
}
+#endif
+
JNIEXPORT jboolean JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_initXTest
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)))
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
int event_basep;
gdk_threads_leave ();
return result;
+
+#else
+
+ return JNI_FALSE;
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseMove
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), jint x, jint y)
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
int result;
XFlush (xdisplay);
gdk_threads_leave ();
+
+#else
+
+ (void) x; // Unused.
+ (void) y; // Unused.
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mousePress
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), jint buttons)
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
int result;
XFlush (xdisplay);
gdk_threads_leave ();
+
+#else
+
+ (void) buttons; // Unused.
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseRelease
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), jint buttons)
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
int result;
XFlush (xdisplay);
gdk_threads_leave ();
+
+#else
+
+ (void) buttons; // Unused.
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_mouseWheel
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), jint wheelAmt)
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
int i = 0;
XFlush (xdisplay);
gdk_threads_leave ();
+
+#else
+
+ (void) wheelAmt; // Unused.
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyPress
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), jint keycode)
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
GdkKeymapKey *keymap_keys = NULL;
XFlush (xdisplay);
gdk_threads_leave ();
+
+#else
+
+ (void) keycode; // Unused.
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkRobotPeer_keyRelease
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), jint keycode)
{
+
+#ifdef HAVE_XTEST
+
GdkDisplay *display;
Display *xdisplay;
GdkKeymapKey *keymap_keys = NULL;
XFlush (xdisplay);
gdk_threads_leave ();
+
+#else
+
+ (void) keycode; // Unused.
+
+#endif
+
}
JNIEXPORT jintArray JNICALL
(JNIEnv *env, jobject obj __attribute__((unused)), jint x, jint y,
jint width, jint height)
{
+
+#ifdef HAVE_XTEST
+
jint stride_bytes, stride_pixels, n_channels, n_pixels;
jintArray jpixels;
jint *java_pixels;
gdk_threads_leave ();
return jpixels;
+
+#else
+
+ (void) env;
+ (void) x;
+ (void) y;
+ (void) width;
+ (void) height;
+ return NULL;
+
+#endif
+
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreen
(JNIEnv * env, jobject obj, jintArray jpoint)
+{
+ gdk_threads_enter();
+
+ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreenUnlocked
+ (env, obj, jpoint);
+
+ gdk_threads_leave();
+
+}
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreenUnlocked
+ (JNIEnv * env, jobject obj, jintArray jpoint)
{
void *ptr;
jint *point;
- gdk_threads_enter ();
-
ptr = gtkpeer_get_widget (env, obj);
point = (*env)->GetIntArrayElements (env, jpoint, 0);
gdk_window_get_root_origin (get_widget(GTK_WIDGET (ptr))->window, point, point+1);
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0);
-
- gdk_threads_leave ();
}
/*
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen
(JNIEnv * env, jobject obj, jintArray jpoint)
+{
+ gdk_threads_enter();
+
+ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreenUnlocked
+ (env, obj, jpoint);
+
+ gdk_threads_leave();
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreenUnlocked
+ (JNIEnv * env, jobject obj, jintArray jpoint)
{
void *ptr;
jint *point;
GtkWidget *widget;
- gdk_threads_enter ();
-
ptr = gtkpeer_get_widget (env, obj);
point = (*env)->GetIntArrayElements (env, jpoint, 0);
*(point+1) += GTK_WIDGET(ptr)->allocation.y;
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0);
-
- gdk_threads_leave ();
}
/*
#include "jcl.h"
#include "gtkpeer.h"
-#include <cairo-xlib.h>
-#include <gdk/gdkx.h>
#include "gnu_java_awt_peer_gtk_GtkImage.h"
#include "gtkpeer.h"
#include "gnu_java_awt_peer_gtk_GtkToolkit.h"
#include "jcl.h"
-#include <gdk/gdkx.h>
#define RC_FILE ".classpath-gtkrc"
gtk_widget_set_default_colormap (gdk_rgb_get_colormap ());
- /* Make sure queued calls don't get sent to GTK/GDK while
- we're shutting down. */
- atexit (gdk_threads_enter);
-
if ((homedir = getenv ("HOME")))
{
rcpath = (char *) g_malloc (strlen (homedir) + strlen (RC_FILE) + 2);
#include "jcl.h"
#include "gtkpeer.h"
-#include <gdk/gdkx.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkprivate.h>
-#include <gdk/gdkx.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf/gdk-pixdata.h>
#else
#if SIZEOF_VOID_P == 4
pointerClass = (*env)->FindClass(env, "gnu/classpath/Pointer32");
- pointerDataFID = (*env)->GetFieldID(env, pointerClass, "data", "I");
-
- /* Find the Pointer32 constructor. */
- pointerConstructorMID = (*env)->GetMethodID(env, pointerClass, "<init>",
- "(I)V");
+ if (pointerClass != NULL)
+ {
+ pointerClass = (*env)->NewGlobalRef (env, pointerClass);
+ pointerDataFID = (*env)->GetFieldID (env, pointerClass, "data", "I");
+ pointerConstructorMID = (*env)->GetMethodID (env, pointerClass, "<init>",
+ "(I)V");
+ }
#else
#error "Pointer size is not supported."
#endif /* SIZEOF_VOID_P == 4 */
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
return set_file_permissions (env, name, executable, ownerOnly,
CPFILE_FLAG_EXEC);
}
+
+/*************************************************************************/
+
+JNIEXPORT jlong JNICALL
+Java_java_io_VMFile_getTotalSpace (JNIEnv *env,
+ jclass clazz __attribute__ ((__unused__)),
+ jstring path)
+{
+#ifndef WITHOUT_FILESYSTEM
+
+ jlong result;
+ const char *_path = NULL;
+
+ _path = (*env)->GetStringUTFChars (env, path, 0);
+ if (_path == NULL)
+ {
+ return 0L;
+ }
+
+ result = cpio_df (_path, TOTAL);
+
+ (*env)->ReleaseStringUTFChars (env, path, _path);
+
+ return result;
+
+#else /* not WITHOUT_FILESYSTEM */
+ return 0L;
+#endif /* not WITHOUT_FILESYSTEM */
+}
+
+/*************************************************************************/
+
+JNIEXPORT jlong JNICALL
+Java_java_io_VMFile_getFreeSpace (JNIEnv *env,
+ jclass clazz __attribute__ ((__unused__)),
+ jstring path)
+{
+#ifndef WITHOUT_FILESYSTEM
+
+ jlong result;
+ const char *_path = NULL;
+
+ _path = (*env)->GetStringUTFChars (env, path, 0);
+ if (_path == NULL)
+ {
+ return 0L;
+ }
+
+ result = cpio_df (_path, FREE);
+
+ (*env)->ReleaseStringUTFChars (env, path, _path);
+
+ return result;
+
+#else /* not WITHOUT_FILESYSTEM */
+ return 0L;
+#endif /* not WITHOUT_FILESYSTEM */
+}
+
+/*************************************************************************/
+
+JNIEXPORT jlong JNICALL
+Java_java_io_VMFile_getUsableSpace (JNIEnv *env,
+ jclass clazz __attribute__ ((__unused__)),
+ jstring path)
+{
+#ifndef WITHOUT_FILESYSTEM
+
+ jlong result;
+ const char *_path = NULL;
+
+ _path = (*env)->GetStringUTFChars (env, path, 0);
+ if (_path == NULL)
+ {
+ return 0L;
+ }
+
+ result = cpio_df (_path, USABLE);
+
+ (*env)->ReleaseStringUTFChars (env, path, _path);
+
+ return result;
+
+#else /* not WITHOUT_FILESYSTEM */
+ return 0L;
+#endif /* not WITHOUT_FILESYSTEM */
+}
+
/*************************************************************************/
/*
* If it isn't an array class then the actual field type descriptor
* starts with 'L', ends with ';' and has '/' instead of '.'.
*/
- type_len = strlen ((char *) type_name);
+ type_len = strlen (type_name);
if (type_name[0] != '[')
{
/* XXX - FIXME - should not use dynamic allocation in core lib. */
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
exception statement from your version. */
#include <config.h>
+
+#if defined HAVE_SYS_LOADAVG_H /* Get getloadavg() on Solaris 9 */
+#include <sys/loadavg.h>
+#else
#include <stdlib.h>
+#endif
#include "gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h"
/*
* Class: java_lang_VMDouble
- * Method: doubleToLongBits
+ * Method: doubleToRawLongBits
* Signature: (D)J
*/
JNIEXPORT jlong JNICALL
-Java_java_lang_VMDouble_doubleToLongBits
+Java_java_lang_VMDouble_doubleToRawLongBits
(JNIEnv * env __attribute__ ((__unused__)),
jclass cls __attribute__ ((__unused__)), jdouble doubleValue)
{
jvalue val;
- jlong e, f;
val.d = doubleValue;
val.j = SWAP_DOUBLE(val.j);
#endif
- e = val.j & 0x7ff0000000000000LL;
- f = val.j & 0x000fffffffffffffLL;
-
- if (e == 0x7ff0000000000000LL && f != 0L)
- val.j = 0x7ff8000000000000LL;
-
- return val.j;
-}
-
-/*
- * Class: java_lang_VMDouble
- * Method: doubleToRawLongBits
- * Signature: (D)J
- */
-JNIEXPORT jlong JNICALL
-Java_java_lang_VMDouble_doubleToRawLongBits
- (JNIEnv * env __attribute__ ((__unused__)),
- jclass cls __attribute__ ((__unused__)), jdouble doubleValue)
-{
- jvalue val;
-
- val.d = doubleValue;
-
-#if defined(__IEEE_BYTES_LITTLE_ENDIAN)
- val.j = SWAP_DOUBLE(val.j);
-#endif
-
return val.j;
}
return val;
}
- buf = (char *) (*env)->GetStringUTFChars (env, str, &isCopy);
+ buf = (*env)->GetStringUTFChars (env, str, &isCopy);
if (buf == NULL)
{
/* OutOfMemoryError already thrown */
#include "java_lang_VMFloat.h"
-/*
- * Class: java_lang_VMFloat
- * Method: floatToIntBits
- * Signature: (F)I
- */
-JNIEXPORT jint JNICALL
-Java_java_lang_VMFloat_floatToIntBits
- (JNIEnv * env __attribute__ ((__unused__)),
- jclass cls __attribute__ ((__unused__)), jfloat value)
-{
- jvalue u;
- jint e, f;
- u.f = value;
- e = u.i & 0x7f800000;
- f = u.i & 0x007fffff;
-
- if (e == 0x7f800000 && f != 0)
- u.i = 0x7fc00000;
-
- return u.i;
-}
-
/*
* Class: java_lang_VMFloat
* Method: floatToRawIntBits
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
#endif
#include <netinet/in.h>
#include <netinet/tcp.h>
+#ifdef HAVE_NET_IF_H
#include <net/if.h>
+#endif
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_INET6
int result;
const char *str_ifname = JCL_jstring_to_cstring (env, ifname);
- u_int if_index;
+ unsigned int if_index;
if ((*env)->ExceptionOccurred (env))
{
}
result = setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF,
- (u_int *) &if_index, sizeof(if_index));
+ (unsigned int *) &if_index, sizeof(if_index));
JCL_free_cstring(env, ifname, str_ifname);
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
+#ifndef _GNU_SOURCE
#define _GNU_SOURCE
+#endif
#include "config.h"
result = cpnet_getHostByName (env, hostname, &addresses, &addresses_count);
if (result != CPNATIVE_OK || addresses_count == 0)
{
- JCL_ThrowException (env, UNKNOWN_HOST_EXCEPTION, (char *) hostname);
+ JCL_ThrowException (env, UNKNOWN_HOST_EXCEPTION, hostname);
return (jobjectArray) NULL;
}
(*env)->ReleaseStringUTFChars (env, host, hostname);
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
#include <sys/epoll.h>
#endif /* HAVE_SYS_EPOLL_H */
+#include <config-int.h>
+
#include <gnu_java_nio_EpollSelectorImpl.h>
#include <jcl.h>
#include <errno.h>
#include <config-int.h>
#include <sys/types.h>
+#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
+#endif
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/uio.h>
#if defined(HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
-
+#if defined(HAVE_SYS_SELECT_H)
#include <sys/select.h>
+#endif
#include <sys/time.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
+#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
+#endif
#include <sys/uio.h>
CPNIO_EXPORT ssize_t
#ifndef __JAVANIO_H__
#define __JAVANIO_H__
+#include <sys/time.h>
+
/**
* This header defines functions that are called by our JNI reference
* implementation of java.nio.*. In our reference implementation, these
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
cpproc.h \
cpproc.c
-AM_LDFLAGS = @CLASSPATH_MODULE@
+AM_LDFLAGS = @CLASSPATH_CONVENIENCE@
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
@EXTRA_CFLAGS@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
cpproc.h \
cpproc.c
-AM_LDFLAGS = @CLASSPATH_MODULE@
+AM_LDFLAGS = @CLASSPATH_CONVENIENCE@
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@ \
@EXTRA_CFLAGS@
#include <sys/select.h>
#endif
+#if defined(HAVE_STATVFS)
+#include <sys/statvfs.h>
+#endif
+
#include <utime.h>
#include "cpnative.h"
if (stat(filename, &statbuf) < 0)
return errno;
-
+
+#ifdef S_IWRITE
if (chmod(filename, statbuf.st_mode & ~(S_IWRITE | S_IWGRP | S_IWOTH)) < 0)
return errno;
+#endif
return 0;
}
return 0;
}
+JNIEXPORT long long
+cpio_df (__attribute__((unused)) const char *path,
+ __attribute__((unused)) CPFILE_DF_TYPE type)
+{
+ long long result = 0L;
+
+#if defined(HAVE_STATVFS)
+
+ long long scale_factor = 0L;
+ struct statvfs buf;
+
+ if (statvfs (path, &buf) < 0)
+ return 0L;
+
+ /* f_blocks, f_bfree and f_bavail are defined in terms of f_frsize */
+ scale_factor = (long long) (buf.f_frsize);
+
+ switch (type)
+ {
+ case TOTAL:
+ result = (long long) (buf.f_blocks * scale_factor);
+ break;
+ case FREE:
+ result = (long long) (buf.f_bfree * scale_factor);
+ break;
+ case USABLE:
+ result = (long long) (buf.f_bavail * scale_factor);
+ break;
+ default:
+ result = 0L;
+ break;
+ }
+
+#endif
+
+ return result;
+}
+
int cpio_checkAccess (const char *filename, unsigned int flag)
{
struct stat statbuf;
int cpio_readDir (void *handle, char *filename)
{
-#ifdef HAVE_READDIR_R
- struct dirent dent;
-#endif /* HAVE_READDIR_R */
struct dirent *dBuf;
-#ifdef HAVE_READDIR_R
- readdir_r ((DIR *) handle, &dent, &dBuf);
-#else
+ errno = 0;
dBuf = readdir((DIR *)handle);
-#endif /* HAVE_READDIR_R */
if (dBuf == NULL)
{
return errno;
}
- strncpy (filename, dBuf->d_name, FILENAME_MAX);
+ strncpy (filename, dBuf->d_name, FILENAME_MAX - 1);
return 0;
}
-
int
cpio_closeOnExec(int fd)
{
JNIEXPORT int cpio_mkdir (const char *filename);
JNIEXPORT int cpio_rename (const char *old_name, const char *new_name);
+/* to be used with cpio_df */
+typedef enum {
+ TOTAL = 0,
+ FREE,
+ USABLE
+} CPFILE_DF_TYPE;
+
+JNIEXPORT long long cpio_df (const char *path, CPFILE_DF_TYPE type);
+
JNIEXPORT int cpio_openDir (const char *dirname, void **handle);
JNIEXPORT int cpio_closeDir (void *handle);
JNIEXPORT int cpio_readDir (void *handle, char *filename);
#include <sys/types.h>
#include <sys/socket.h>
+#ifdef HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
+#endif /* HAVE_NETINET_IN_SYSTM_H */
#include <netinet/in.h>
+#ifdef HAVE_NETINET_IP_H
#include <netinet/ip.h>
+#endif /* HAVE_NETINET_IP_H */
typedef struct {
jint len;
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
* @param inStream Input stream containing the message to generate
* the MIC over.
* @param outStream Output stream to write the GSS-API output token to.
- * @param msgProp Instance of MessageProp that is used by the
+ * @param mgProp Instance of MessageProp that is used by the
* application to set the desired QOP. Set the desired
* QOP to 0 in msgProp to request the default QOP.
* Alternatively pass in <code>null</code> for msgProp
public static PolicyError read(InputStream input)
{
// Read the exception repository id.
- String id = input.read_string();
+ input.read_string();
PolicyError value = new PolicyError();
value.reason = input.read_short();
output.write_string(id());
output.write_short(value.reason);
}
-}
\ No newline at end of file
+}
public static UnknownUserException read(InputStream input)
{
// Read the exception repository id.
- String id = input.read_string();
+ input.read_string();
UnknownUserException value = new UnknownUserException();
value.except = input.read_any();
output.write_string(id());
output.write_any(value.except);
}
-}
\ No newline at end of file
+}
/** @inheritDoc */
public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
{
- Integer call_method = (Integer) _NamingContextExtImplBase._methods.get(method);
+ Integer call_method = _NamingContextExtImplBase._methods.get(method);
if (call_method == null)
// The older methods are handled separately.
OutputStream super_invoke(String method, InputStream in, ResponseHandler rh)
{
OutputStream out = null;
- Integer call_method = (Integer) _NamingContextImplBase.methods.get(method);
+ Integer call_method = _NamingContextImplBase.methods.get(method);
if (call_method == null)
throw new BAD_OPERATION(Minor.Method, CompletionStatus.COMPLETED_MAYBE);
public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
{
OutputStream out = null;
- Integer call_method = (Integer) _NamingContextImplBase.methods.get(method);
+ Integer call_method = _NamingContextImplBase.methods.get(method);
if (call_method == null)
throw new BAD_OPERATION(Minor.Method, CompletionStatus.COMPLETED_MAYBE);
public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
{
- Integer call_method = (Integer) _methods.get(method);
+ Integer call_method = _methods.get(method);
if (call_method == null)
{
Streamable result = null;
- Integer call_method = (Integer) _methods.get(request.operation());
+ Integer call_method = _methods.get(request.operation());
if (call_method == null)
{
public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
{
OutputStream out = null;
- Integer call_method = (Integer) methods.get(method);
+ Integer call_method = methods.get(method);
if (call_method == null)
throw new BAD_OPERATION(Minor.Method, CompletionStatus.COMPLETED_MAYBE);
Streamable result = null;
// The server request contains no required result type.
- Integer call_method = (Integer) methods.get(request.operation());
+ Integer call_method = methods.get(request.operation());
if (call_method == null)
throw new BAD_OPERATION(Minor.Method, CompletionStatus.COMPLETED_MAYBE);
import org.omg.CORBA.Any;
import org.omg.CORBA.BAD_OPERATION;
-import org.omg.CORBA.MARSHAL;
import org.omg.CORBA.ORB;
import org.omg.CORBA.StructMember;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.portable.InputStream;
import org.omg.CORBA.portable.OutputStream;
-import java.io.IOException;
-
/**
* A helper operations for the {@link TaggedComponent}.
*
public static DuplicateName read(InputStream input)
{
// Read the exception repository id.
- String id = input.read_string();
+ input.read_string();
DuplicateName value = new DuplicateName();
value.name = input.read_string();
output.write_string(id());
output.write_string(value.name);
}
-}
\ No newline at end of file
+}
public static ForwardRequest read(InputStream input)
{
// Read the exception repository id.
- String id = input.read_string();
+ input.read_string();
ForwardRequest value = new ForwardRequest();
value.forward_reference = input.read_Object();
output.write_string(id());
output.write_Object(value.forward_reference);
}
-}
\ No newline at end of file
+}
public static InvalidPolicy read(InputStream input)
{
// Read the exception repository id.
- String id = input.read_string();
+ input.read_string();
InvalidPolicy value = new InvalidPolicy();
value.index = input.read_short();
output.write_string(id());
output.write_short(value.index);
}
-}
\ No newline at end of file
+}
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
+++ /dev/null
-# messages.properties -- English language messages
-# Copyright (C) 2007 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.
-
-Main.FailedToRead:failed to read ecj.jar (reconfigure with --with-ecj-jar): {0}
-Main.MalformedURL:malformed URL for ecj.jar: {0}
-Main.FailedToLoad:failed to load {0} from ecj.jar: {1}
-Main.FailedConstructor:failed to find ecj constructor
-Main.FailedCompile:failed to find ecj compile method
+++ /dev/null
-# messages.properties -- English language messages
-# Copyright (C) 2004, 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.
-
-Main.ErrorApplet=An error occurred while loading this applet.
-Main.Usage=Usage: appletviewer [OPTION] -code CODE | URL...
-Main.AppletTagOptions=Applet tag options
-Main.CodeDescription=specify the code attribute
-Main.CodeArgument=CODE
-Main.CodebaseDescription=specify the codebase attribute
-Main.CodebaseArgument=CODEBASE
-Main.ArchiveDescription=specify the archive attribute
-Main.ArchiveArgument=ARCHIVE
-Main.WidthDescription=specify the width attribute
-Main.WidthArgument=WIDTH
-Main.HeightDescription=specify the height attribute
-Main.HeightArgument=HEIGHT
-Main.ParamDescription=specify the parameter arguments
-Main.ParamArgument=NAME,VALUE
-Main.PluginOption=Plugin option
-Main.PluginDescription=enable plugin mode
-Main.PluginArgument=INPUT,OUTPUT
-Main.DebuggingOption=Debugging option
-Main.VerboseDescription=enable verbose mode
-Main.CompatibilityOptions=Compatibility options
-Main.DebugDescription=enable debugging mode (not implemented)
-Main.EncodingDescription=specify the HTML character encoding
-Main.EncodingArgument=CHARSET
-Main.SecurityWarning=WARNING: CURRENTLY GAPPLETVIEWER RUNS WITH NO\
- SECURITY MANAGER.\n\
-THIS MEANS THAT APPLETS YOU LOAD CAN DO ANYTHING A JAVA APPLICATION\n\
-THAT YOU DOWNLOAD AND RUN CAN DO. BE *VERY* CAREFUL WHICH APPLETS YOU RUN.\n\
-DO NOT USE GAPPLETVIEWER ON YOUR SYSTEM IF YOUR SYSTEM STORES IMPORTANT\
- DATA.\n\
-THIS DATA CAN BE DESTROYED OR STOLEN IF YOU LOAD A MALICIOUS APPLET.
-Main.ContinuationPrompt=[press 'c' or 'C' to continue or anything else to quit]
-Main.NoInputFiles=appletviewer: no input files
-Main.RawArguments=Raw arguments:
-
-PluginAppletViewer.AppletViewerWrote=PIPE: applet viewer wrote:
-PluginAppletViewer.AppletViewerRead=PIPE: applet viewer read:
-PluginAppletViewer.AppletViewerExiting=appletviewer: exiting plugin applet\
- viewer
-
-StandaloneAppletContext.ShowDocumentError=showDocument is not implemented in\
- standalone mode
-
-StandaloneAppletViewer.ParsedAppletTags=Parsed applet tags:
-StandaloneAppletViewer.Tag=tag
-StandaloneAppletViewer.CodeOptionError=appletviewer: option '--code' requires\
- a class filename
-
-StandaloneAppletWindow.MenuTitle=Applet
-StandaloneAppletWindow.MenuReload=Reload
-StandaloneAppletWindow.MenuRestart=Restart
-StandaloneAppletWindow.MenuStart=Start
-StandaloneAppletWindow.MenuStop=Stop
-StandaloneAppletWindow.MenuClone=Clone ...
-StandaloneAppletWindow.MenuQuit=Quit
-StandaloneAppletWindow.MenuClose=Close
-StandaloneAppletWindow.MenuTag=Tag ...
-StandaloneAppletWindow.MenuInfo=Info ...
-StandaloneAppletWindow.MenuEdit=Edit
-StandaloneAppletWindow.MenuEncoding=Character Encoding
-StandaloneAppletWindow.MenuPrint=Print ...
-StandaloneAppletWindow.MenuProperties=Properties ...
-StandaloneAppletWindow.MenuCancel=Cancel
-StandaloneAppletWindow.MenuSave=Save ...
-StandaloneAppletWindow.WindowTitle=GNU Classpath Applet Viewer:
+++ /dev/null
-# 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.
-
-ClasspathToolParser.JArgument=pass argument to the Java runtime
-ClasspathToolParser.JName=OPTION
-ClasspathToolParser.VersionFormat={0} (GNU Classpath) {1}\n\nCopyright 2006 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.
+++ /dev/null
-# 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
+++ /dev/null
-# messages.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.
-
-Creator.Ignoring=ignoring entry {0}
-Creator.Adding=adding: {0} (in={1,number,integer}) (out={2,number,integer}) (stored {3,number,integer}%)
-Extractor.Created=\ \ created: {0}
-Extractor.Extracted=\ extracted: {0}
-Extractor.Inflated=\ \ inflated: {0}
-Indexer.Indexing=indexing: {0}
-Main.ArchiveAlreadySet=archive file name already set to {0}
-Main.ModeAlreaySet=operation mode already specified
-Main.MustSpecify=must specify one of -t, -c, -u, -x, or -i
-Main.TwoArgsReqd=-C argument requires both directory and filename
-Main.CantHaveBoth=can't specify both -m and -M
-Main.NoFilesWithi=can't specify file arguments when using -i
-Main.NoMAndi=can't specify -M with -i
-Main.AnotherNomAndi=can't specify -m with -i
-Main.Usage=Usage: jar -ctxui [OPTIONS] jar-file [-C DIR FILE] FILE...
-Main.OpMode=Operation mode
-Main.Create=create a new archive
-Main.Extract=extract from archive
-Main.List=list archive contents
-Main.Update=update archive
-Main.Index=compute archive index
-Main.FileArg=FILE
-Main.OpMods=Operation modifiers
-Main.ArchiveName=specify archive file name
-Main.FileArg2=FILE
-Main.NoZip=store only; no ZIP compression
-Main.Verbose=verbose operation
-Main.NoManifest=do not create a manifest file
-Main.ManifestName=specify manifest file
-Main.ManifestArgName=FILE
-Main.FileNameGroup=File name selection
-Main.ChangeDir=change to directory before the next file
-Main.ChangeDirArg=DIR FILE
-Main.InternalError=jar: internal error:
-Main.Stdin=Read file names from stdin
+++ /dev/null
-# default locale messages for gnu.classpath.tools.jarsigner package
-
-Main.7=jarsigner:
-Main.9=jarsigner error:
-Main.70=JAR file [{0}] is NOT a file object
-Main.72=JAR file [{0}] is NOT readable
-#Main.85=Option '-keystore' is not defined or is an empty string, and 'user.home' is unknown
-Main.85=Unable to locate a valid key store
-Main.92=Enter key store password:
-Main.6=Designated alias [{0}] MUST be known to the key store in use
-Main.95=Designated alias [{0}] MUST be an Alias of a Key Entry
-Main.97=Enter key password for <{0}>:
-Main.99=Key associated with [{0}] MUST be a private key
-
-JarSigner.1=\ \ signing:
-JarSigner.2=\ updating:
-JarSigner.8=\ \ \ adding:
-JarSigner.11=\ \ \ adding:
-JarSigner.14=jar signed.
-
-JarVerifier.2=jar is not signed.--no signature files found.
-JarVerifier.3=jar verification failed.
-JarVerifier.4=jar partially verified --{0,numer} of {1,number} signers.
-JarVerifier.7=jar verified --{0,number} signer(s).
-JarVerifier.13=Signature Block missing for {0}
-JarVerifier.14=At least one SignerInfo element MUST be present in a Signature Block (.DSA file)
-JarVerifier.16=Missing EncryptedDigest in Signature Block (.DSA file) first SignerInfo element
-
-SFHelper.1=Helper is NOT finished
-SFHelper.4=.SF file has NOT been generated
-SFHelper.6=Unknown or unsupported private key algorithm
-SFHelper.9=Helper is NOT ready
-SFHelper.10=Helper is NOT started
+++ /dev/null
-# messages.properties -- English language messages and message formats
-# 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.
-#
-# for gnu.classpath.tools.jarsigner package
-#
-
-Main.7=jarsigner:
-Main.9=jarsigner error:
-Main.70=JAR file [{0}] is NOT a file object
-Main.72=JAR file [{0}] is NOT readable
-#Main.85=Option '-keystore' is not defined or is an empty string, and 'user.home' is unknown
-Main.85=Unable to locate a valid key store
-Main.92=Enter key store password:
-Main.6=Designated alias [{0}] MUST be known to the key store in use
-Main.2=\
-Usage: jarsigner [OPTION]... FILE ALIAS\n\
-\ \ \ \ \ \ \ \ jarsigner -verify [OPTION]... FILE\n\
-Java ARchive (JAR) file signing and verification tool.\n\
-\n\
-FILE is the .JAR file to sign or to verify.\n\
-\n\
-ALIAS must be a known Alias of a Key Entry in the designated key store. The \
-private key material associated with this Alias is used for signing FILE. if \
-ALIAS is required, but was omitted, "mykey" will be used instead.
-Main.1=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-Main.0=Signing options
-Main.95=Designated alias [{0}] MUST be an Alias of a Key Entry
-Main.97=Enter key password for <{0}>:
-Main.99=Key associated with [{0}] MUST be a private key
-Main.101=Location of the key store to use. The default value is a file-based \
-scheme whose path is the file named ".keystore" in your home directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-Main.102=URL
-Main.104=Type of the key store to use. If omitted, the default value is that \
-of the property "keystore.type" in the security properties file.
-Main.105=STORE_TYPE
-Main.107=Password to unlock the key store. If omitted, you will be prompted \
-to provide a password.
-Main.108=PASSWORD
-Main.110=Password to unlock the Key Entry associated with ALIAS. If omitted, \
-the tool will use the same password protecting the key store. If this fails, \
-you will be prompted to provide a password.
-Main.111=PASSWORD
-Main.113=A literal to construct file names for both the .SF and .DSA signature \
-files --which will be placed in the META-INF directory of the signed JAR. \
-Permissible characters are in the range [a-zA-Z0-9_-].\n\
-If omitted, the first 8 characters of ALIAS will be used. Characters outside \
-that range will be replaced by underscores.
-Main.114=NAME
-Main.116=Name of the signed JAR file. If omitted, the signed JAR will be \
-named the same as FILE; i.e. the input file will be replaced with its signed \
-copy.
-Main.117=FILE
-Main.118=Verification options
-Main.120=Verify an already signed FILE.
-Main.122=Use with -verbose to see more detailed information about the \
-certificates of ALIAS.
-Main.123=Common options
-Main.125=Output more verbose messages during processing.
-Main.127=Include --otherwise do not-- the .SF file in the .DSA generated file.
-Main.129=Include in the .SF generated file --otherwise do not-- a header \
-containing a hash of the whole manifest file.
-Main.131=Fully qualified class name of a Security Provider to add to the JVM \
-in-use.
-Main.132=PROVIDER_CLASS_NAME
-Main.133=Missing FILE argument.
-
-JarSigner.1=\ \ signing:
-JarSigner.2=\ updating:
-JarSigner.8=\ \ \ adding:
-JarSigner.14=Jar signed.
-
-JarVerifier.2=Jar is not signed --no signature files found.
-JarVerifier.3=Jar verification failed.
-JarVerifier.4=Jar partially verified --{0,numer} of {1,number} signers.
-JarVerifier.7=Jar verified --{0,number} signer(s).
-JarVerifier.13=Signature Block missing for {0}
-JarVerifier.14=At least one SignerInfo element MUST be present in a Signature \
-Block (.DSA file)
-JarVerifier.16=Missing EncryptedDigest in Signature Block (.DSA file) first \
-SignerInfo element
-
-SFHelper.1=Helper is NOT finished
-SFHelper.4=.SF file has NOT been generated
-SFHelper.6=Unknown or unsupported private key algorithm
-SFHelper.9=Helper is NOT ready
-SFHelper.0=Warning: The certificate issued by {0}, for {1}, has expired as of {3,date,full} - {3,time,full}.
-SFHelper.10=Helper is NOT started
-SFHelper.11=Warning: The certificate issued by {0}, for {1}, is only valid after {3,date,full} - {3,time,full}.
-SFHelper.14=[unknown]
-SFHelper.17=[unnamed]
+++ /dev/null
-# default locale messages for gnu.classpath.tools.keytool package
-
-Main.6=keytool:
-Main.8=keytool error:
-
-Command.19=Failed creating new file at {0}
-Command.20=Unable to find a suitable signature algorithm named {0}, although we found a key-pair generation algorithm named {1}
-Command.21=Enter key password for <{0}>:
-Command.23=A correct key password MUST be provided
-Command.24=Enter key store password:
-#Command.36=Option '-keystore' is undefined, or is an empty string, and 'user.home' is unknown
-Command.36=Unable to locate a valid key store
-Command.40=Provider fully qualified class name:
-Command.42=File object [{0}] exists but is NOT a file
-Command.44=File [{0}] exists but is NOT writable
-Command.46=File object [{0}] MUST be an existing readable file
-Command.48=Signature algorithm is missing and private key is of unknown or unsupported type
-Command.51=Validity period MUST be greater than zero
-Command.52=Unable to get signature algorithm name
-Command.60=Unknown or unsupported signature algorithm: {0}
-Command.63=Saving key store at {0}
-Command.66=Owner: {0}
-Command.67=Issuer: {0}
-Command.68=Serial number: {0,number}
-Command.69=Valid from: {0,date,full} - {0,time,full}
-Command.70=\ \ \ \ \ until: {0,date,full} - {0,time,full}
-Command.71=Certificate fingerprints
-Command.72=\ \ \ \ \ \ MD5: {0}
-Command.73=\ \ SHA-160: {0}
-Command.75=Alias [{0}] MUST be knwon to the key store
-Command.77=Alias [{0}] MUST be associated with a Key Entry
-
-CertReqCmd.27=Certification request stored in {0}
-CertReqCmd.28=Submit this to your CA
-
-DeleteCmd.19=Enter the Alias to delete:
-DeleteCmd.20=Alias MUST NOT be null or an empty string
-
-GenKeyCmd.0=\nYou are about to enter information that will be incorporated into\n\
-your certificate request. This information is what is called a\n\
-Distinguished Name or DN. There are quite a few fields but you\n\
-can use supplied default values, displayed between brackets, by just\n\
-hitting <Enter>, or blank the field by entering the <.> character\n\
-before hitting <Enter>.\n\n
-GenKeyCmd.6=The Sample Company
-GenKeyCmd.7=Sydney
-GenKeyCmd.8=NSW
-GenKeyCmd.9=AU
-GenKeyCmd.10=Common Name (hostname, IP, or your name):
-GenKeyCmd.11=Organization Name (company) [{0}]:
-GenKeyCmd.13=Organizational Unit Name (department, division):
-GenKeyCmd.14=Locality Name (city, district) [{0}]:
-GenKeyCmd.16=State or Province Name (full name) [{0}]:
-GenKeyCmd.18=Country Name (2 letter code) [{0}]:
-GenKeyCmd.54=Key size MUST be greater than zero
-
-StorePasswdCmd.19=Too many failed attempts
-StorePasswdCmd.20=Enter new key store password:
-StorePasswdCmd.21=Password MUST be at least 6 characters.
-StorePasswdCmd.22=New password MUST be different than the old one.
-StorePasswdCmd.23=Re-enter new key store password:
-StorePasswdCmd.24=Passwords MUST be the same in both attempts.
-
-KeyPasswdCmd.24=Enter new key password for <{0}>:
-KeyPasswdCmd.28=Re-enter new key password for <{0}>:
-
-KeyCloneCmd.23=Destination Alias MUST NOT exist in key store
-KeyCloneCmd.26=Enter destination alias:
-KeyCloneCmd.27=Destination alias MUST NOT be null nor empty
-KeyCloneCmd.28=Enter new key password for <{0}> [{1}]:
-
-ListCmd.21=Key store type: {0}
-ListCmd.22=Key store provider: {0}
-ListCmd.24=Key store contains {0,number} entry(ies)
-ListCmd.30=Alias name: {0}
-ListCmd.31=Creation timestamp: {0,date,full} - {0,time,full}
-ListCmd.32=Entry type: trusted-certificate
-ListCmd.33=Entry type: key-entry
-ListCmd.34=Alias [{0}] is unknown to the key store
-ListCmd.38=Certificate chain length: {0,number}
-ListCmd.39=Certificate[1]:
-ListCmd.40=Certificate[{0,number}]:
-ListCmd.42=*******************************************
-ListCmd.43=-----BEGIN CERTIFICATE-----
-ListCmd.44=-----END CERTIFICATE-----
-ListCmd.45=Certificate fingerprint (MD5): {0}
-
-ImportCmd.34=Failed to establish chain-of-trust from reply
-ImportCmd.37=Unable to find anchor certificate for {0}
-ImportCmd.38=Public keys, in key store and certificate, MUST be of the same type
-ImportCmd.32=Can this certificate be trusted?
-ImportCmd.40=Key entry associated with {0} has an unknown or unsupported public key type {1}
-ImportCmd.41=Public keys, in key store and certificate, MUST be the same
-ImportCmd.29=Certificate was added to the key store
-ImportCmd.28=Certificate was not added to the key store
+++ /dev/null
-# messages.properties -- English language messages and message formats
-# 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.
-#
-# for gnu.classpath.tools.keytool package
-#
-
-Main.6=keytool: {0}
-Main.8=keytool error: {0}
-Main.5=Import a CA's Trusted Certificate.\n\
-[-file FILE] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-Main.18=Unrecognized command: {0}
-Main.19=Usage: keytool [COMMAND] [-- COMMAND]...\n\
-Manage private keys and public certificates.
-Main.20=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-Main.21=Available commands
-Main.22=Generate a Key Entry, eventually creating a key store.\n\
-[-alias ALIAS] [-keyalg ALGORITHM] [-keysize KEY_SIZE]\n\
-[-sigalg ALGORITHM] [-dname NAME] [-keypass PASSWORD]\n\
-[-validity DAY_COUNT] [-storetype STORE_TYPE]\n\
-[-keystore URL] [-storepass PASSWORD]\n\
-[-provider PROVIDER_CLASS_NAME] [-v].
-Main.23=Add Key Entries and Trusted Certificates.\n\
-[-alias ALIAS] [-file FILE] [-keypass PASSWORD]\n\
-[-noprompt] [-trustcacerts] [-storetype STORE_TYPE]\n\
-[-keystore URL] [-storepass PASSWORD]\n\
-[-provider PROVIDER_CLASS_NAME] [-v].
-Main.24=Generate a self-signed Trusted Certificate.\n\
-[-alias ALIAS] [-sigalg ALGORITHM] [-dname NAME]\n\
-[-validity DAY_COUNT] [-keypass PASSWORD]\n\
-[-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-Main.25=NOT IMPLEMENTED YET. Import JDK1.1 Identity Database.\n\
-[-file FILE] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-Main.26=Issue a Certificate Signing Request (CSR).\n\
-[-alias ALIAS] [-sigalg ALGORITHM] [-file FILE]\n\
-[-keypass PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v]\n\
-[-attributes].
-Main.27=Export a Certificate from a key store.\n\
-[-alias ALIAS] [-file FILE] [-storetype STORE_TYPE]\n\
-[-keystore URL] [-storepass PASSWORD]\n\
-[-provider PROVIDER_CLASS_NAME] [-rfc] [-v].
-Main.28=Print one or all Certificates in a key store to STDOUT.\n\
-[-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-rfc] [-v].
-Main.29=Print a human-readable form of a Certificate in a FILE.\n\
-[-file FILE] [-v].
-Main.30=Clone a Key Entry in a key store.\n\
-[-alias ALIAS] [-dest ALIAS] [-keypass PASSWORD]\n\
-[-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-Main.31=Change the password protecting a key store.\n\
-[-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-Main.32=Change the password protecting a Key Entry in a key store.\n\
-[-alias ALIAS] [-keypass PASSWORD] [-new PASSWORD]\n\
-[-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-Main.33=Delete a Key Entry or a Trusted Certificate from a key store.\n\
-[-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]\n\
-[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
-
-Command.19=Failed creating new file at {0}
-Command.20=Unable to find a suitable signature algorithm named {0}, although we found a key-pair generation algorithm named {1}
-Command.21=Enter key password for <{0}>:
-Command.23=A correct key password MUST be provided
-Command.24=Enter key store password:
-#Command.36=Option '-keystore' is undefined, or is an empty string, and 'user.home' is unknown
-Command.36=Unable to locate a valid key store
-Command.40=Provider fully qualified class name:
-Command.42=File object [{0}] exists but is NOT a file
-Command.44=File [{0}] exists but is NOT writable
-Command.46=File object [{0}] MUST be an existing readable file
-Command.48=Signature algorithm is missing and private key is of unknown or unsupported type
-Command.51=Validity period MUST be greater than zero
-Command.52=Unable to get signature algorithm name
-Command.60=Unknown or unsupported signature algorithm: {0}
-Command.63=Saving key store at {0}
-Command.66=Owner: {0}
-Command.67=Issuer: {0}
-Command.68=Serial number: {0,number}
-Command.69=Valid from: {0,date,full} - {0,time,full}
-Command.70=\ \ \ \ \ until: {0,date,full} - {0,time,full}
-Command.71=Certificate fingerprints
-Command.72=\ \ \ \ \ \ MD5: {0}
-Command.73=\ \ SHA-160: {0}
-Command.75=Alias [{0}] MUST be knwon to the key store
-Command.77=Alias [{0}] MUST be associated with a Key Entry
-
-CertReqCmd.27=Certification request stored in {0}
-CertReqCmd.28=Submit this to your CA
-CertReqCmd.25=Usage: keytool -certreq [OPTION]...\n\
-Generate a PKCS#10 Certificate Signing Request (CSR) and write it to a \
-designated output destination.\n\n\
-IMPORTANT: Some documentation claims that the Attributes field, in the CSR is \
-OPTIONAL while RFC-2986 implies the opposite. This implementation considers \
-this field, by default, as OPTIONAL, unless option -attributes is specified.
-CertReqCmd.24=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-CertReqCmd.23=Command options
-CertReqCmd.22=Alias of an entry in the key store on whose behalf the CSR is \
-generated. The value "mykey" (all lower case, without the enclosing quotes) \
-is used when this option is omitted.
-CertReqCmd.21=ALIAS
-CertReqCmd.20=Name of the digital signature algorithm to use for signing the \
-certificate. If omitted, a default value is chosen based on the type of the \
-private key associated with ALIAS. If the key is a "DSA" one, the value for \
-signature algorithm will be "SHA1withDSA". If on the other hand the key is \
-an "RSA" one, then "MD5withRSA" will be the signature algorithm.
-CertReqCmd.19=ALGORITHM
-CertReqCmd.18=Destination of the generated CSR. STDOUT is used if this \
-option is omitted.
-CertReqCmd.17=FILE
-CertReqCmd.16=Password to unlock the Key Entry associated with ALIAS. If \
-omitted, the tool will attempt to unlock the Key Entry using the same password \
-protecting the key store. If this fails, you will be prompted for a password.
-CertReqCmd.14=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-CertReqCmd.13=STORE_TYPE
-CertReqCmd.12=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-CertReqCmd.11=URL
-CertReqCmd.10=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-CertReqCmd.9=PASSWORD
-CertReqCmd.8=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-CertReqCmd.7=PROVIDER_CLASS_NAME
-CertReqCmd.6=Emit more verbose messages.
-CertReqCmd.5=Force the tool to encode a NULL DER value in the CSR as the value \
-of the Attributes field.
-
-DeleteCmd.19=Enter the Alias to delete:
-DeleteCmd.18=Usage: keytool -delete [OPTION]...\n\
-Delete a designated key store entry.
-DeleteCmd.17=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-DeleteCmd.16=Command options
-DeleteCmd.15=Alias of an entry to delete. The value "mykey" (all lower case, \
-without the enclosing quotes) is used when this option is omitted.
-DeleteCmd.14=ALIAS
-DeleteCmd.13=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-DeleteCmd.12=STORE_TYPE
-DeleteCmd.11=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-DeleteCmd.10=URL
-DeleteCmd.20=Alias MUST NOT be null or an empty string
-DeleteCmd.9=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-DeleteCmd.8=PASSWORD
-DeleteCmd.7=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-DeleteCmd.6=PROVIDER_CLASS_NAME
-DeleteCmd.5=Emit more verbose messages.
-
-GenKeyCmd.0=\nYou are about to enter information that will be incorporated into\n\
-your certificate request. This information is what is called a\n\
-Distinguished Name or DN. There are quite a few fields but you\n\
-can use supplied default values, displayed between brackets, by just\n\
-hitting <Enter>, or blank the field by entering the <.> character\n\
-before hitting <Enter>.\n\n
-GenKeyCmd.6=The Sample Company
-GenKeyCmd.7=Sydney
-GenKeyCmd.8=NSW
-GenKeyCmd.9=AU
-GenKeyCmd.10=Common Name (hostname, IP, or your name):
-GenKeyCmd.11=Organization Name (company) [{0}]:
-GenKeyCmd.13=Organizational Unit Name (department, division):
-GenKeyCmd.14=Locality Name (city, district) [{0}]:
-GenKeyCmd.16=State or Province Name (full name) [{0}]:
-GenKeyCmd.18=Country Name (2 letter code) [{0}]:
-GenKeyCmd.54=Key size MUST be greater than zero
-GenKeyCmd.57=Usage: keytool -genkey [OPTION]...\n\
-Generate a new key-pair and save these credentials in the key store as a Key \
-Entry, associated with a designated Alias.
-GenKeyCmd.58=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-GenKeyCmd.59=Command options
-GenKeyCmd.60=Alias of the Key Entry to generate. The value "mykey" (all lower \
-case, without the enclosing quotes) is used when this option is omitted.
-GenKeyCmd.61=ALIAS
-GenKeyCmd.62=Name of the key-pair generation algorithm. The default value is \
-"DSS" (a synonym for the Digital Signature Algorithm also known as DSA).
-GenKeyCmd.63=ALGORITHM
-GenKeyCmd.64=Number of bits of the shared modulus, for both the public and \
-private keys, to use for the new keys. If omitted, 1024 is used.
-GenKeyCmd.65=SIZE
-GenKeyCmd.66=Name of the digital signature algorithm to use for signing the \
-certificate. If omitted, a default value is chosen based on the type of the \
-private key associated with ALIAS. If the key is a "DSA" one, the value for \
-signature algorithm will be "SHA1withDSA". If on the other hand the key is \
-an "RSA" one, then "MD5withRSA" will be the signature algorithm.
-GenKeyCmd.68=The X.500 Distinguished Name of the Subject of the generated \
-certificate. If omitted you will be prompted for one.
-GenKeyCmd.69=NAME
-GenKeyCmd.70=Password to protect the newly created Key Entry. If omitted, \
-you will be prompted to provide a password.
-GenKeyCmd.71=PASSWORD
-GenKeyCmd.72=Number of days the generated certificate is valid for. If \
-omitted, 90 is used.
-GenKeyCmd.73=DAY_COUNT
-GenKeyCmd.74=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-GenKeyCmd.75=STORE_TYPE
-GenKeyCmd.76=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-GenKeyCmd.77=URL
-GenKeyCmd.78=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-GenKeyCmd.80=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-GenKeyCmd.81=PROVIDER_CLASS_NAME
-GenKeyCmd.82=Emit more verbose messages.
-
-StorePasswdCmd.19=Too many failed attempts
-StorePasswdCmd.18=Usage: keytool -storepasswd [OPTION]...\n\
-Change the password protecting a key store.
-StorePasswdCmd.17=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-StorePasswdCmd.16=Command options
-StorePasswdCmd.15=The new, and different, password to protect the key store. \
-If omitted, you will be prompted for one.
-StorePasswdCmd.13=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-StorePasswdCmd.12=STORE_TYPE
-StorePasswdCmd.11=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-StorePasswdCmd.10=URL
-StorePasswdCmd.20=Enter new key store password:
-StorePasswdCmd.21=Password MUST be at least 6 characters.
-StorePasswdCmd.22=New password MUST be different than the old one.
-StorePasswdCmd.23=Re-enter new key store password:
-StorePasswdCmd.24=Passwords MUST be the same in both attempts.
-StorePasswdCmd.9=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-StorePasswdCmd.8=PASSWORD
-StorePasswdCmd.7=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-StorePasswdCmd.6=PROVIDER_CLASS_NAME
-StorePasswdCmd.5=Emit more verbose messages.
-
-KeyPasswdCmd.24=Enter new key password for <{0}>:
-KeyPasswdCmd.28=Re-enter new key password for <{0}>:
-KeyPasswdCmd.23=Usage: keytool -keypasswd [OPTION]...\n\
-Change the password protecting a Key Entry.
-KeyPasswdCmd.22=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-KeyPasswdCmd.21=Command options
-KeyPasswdCmd.20=The Alias which password is to be changed.
-KeyPasswdCmd.19=ALIAS
-KeyPasswdCmd.18=Password to unlock ALIAS. If omitted, the tool will attempt \
-to unlock the Key Entry using the same password protecting the key store. If \
-this fails, you will be prompted for a password.
-KeyPasswdCmd.16=The new, and different, password to protect ALIAS.
-KeyPasswdCmd.14=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-KeyPasswdCmd.13=STORE_TYPE
-KeyPasswdCmd.12=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-KeyPasswdCmd.11=URL
-KeyPasswdCmd.10=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-KeyPasswdCmd.9=PASSWORD
-KeyPasswdCmd.8=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-KeyPasswdCmd.7=PROVIDER_CLASS_NAME
-KeyPasswdCmd.6=Emit more verbose messages.
-
-KeyCloneCmd.23=Destination Alias MUST NOT exist in key store
-KeyCloneCmd.26=Enter destination alias:
-KeyCloneCmd.27=Destination alias MUST NOT be null nor empty
-KeyCloneCmd.28=Enter new key password for <{0}> [{1}]:
-KeyCloneCmd.22=Usage: keytool -keyclone [OPTION]...\n\
-Clone an existing Key Entry and store it under a new (different) Alias \
-protecting its private key material with possibly a new password.
-KeyCloneCmd.21=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-KeyCloneCmd.20=Command options
-KeyCloneCmd.19=Alias of an entry to clone. The value "mykey" (all lower case, \
-without the enclosing quotes) is used when this option is omitted.
-KeyCloneCmd.17=Alias to identify the cloned copy of the Key Entry.
-KeyCloneCmd.16=ALIAS
-KeyCloneCmd.15=Password to unlock the Key Entry associated with the Alias to \
-clone. If omitted, the tool will attempt to unlock the Key Entry using the \
-same password protecting the key store. If this fails, you will be prompted \
-for a password.
-KeyCloneCmd.13=Password to protect the cloned copy of the Key Entry. If \
-omitted, you will be prompted to provide one.
-KeyCloneCmd.11=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-KeyCloneCmd.10=STORE_TYPE
-KeyCloneCmd.9=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-KeyCloneCmd.8=URL
-KeyCloneCmd.7=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-KeyCloneCmd.6=PASSWORD
-KeyCloneCmd.5=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-KeyCloneCmd.4=PROVIDER_CLASS_NAME
-KeyCloneCmd.3=Emit more verbose messages.
-
-ListCmd.21=Key store type: {0}
-ListCmd.22=Key store provider: {0}
-ListCmd.24=Key store contains {0,number} entry(ies)
-ListCmd.20=Usage: keytool -list [OPTION]...\n\
-Print one or all of the key store entries to STDOUT. Usually this command \
-will only print a fingerprint of the certificate, unless either -rfc or -v \
-is specified.
-ListCmd.30=Alias name: {0}
-ListCmd.31=Creation timestamp: {0,date,full} - {0,time,full}
-ListCmd.32=Entry type: trusted-certificate
-ListCmd.33=Entry type: key-entry
-ListCmd.34=Alias [{0}] is unknown to the key store
-ListCmd.38=Certificate chain length: {0,number}
-ListCmd.39=Certificate[1]:
-ListCmd.40=Certificate[{0,number}]:
-ListCmd.42=*******************************************
-ListCmd.43=-----BEGIN CERTIFICATE-----
-ListCmd.44=-----END CERTIFICATE-----
-ListCmd.45=Certificate fingerprint (MD5): {0}
-ListCmd.19=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-ListCmd.18=Command options
-ListCmd.17=Alias of an entry to list. If omitted, all entries are listed.
-ListCmd.16=ALIAS
-ListCmd.15=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-ListCmd.14=STORE_TYPE
-ListCmd.13=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-ListCmd.12=URL
-ListCmd.11=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-ListCmd.10=PASSWORD
-ListCmd.9=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-ListCmd.8=PROVIDER_CLASS_NAME
-ListCmd.7=Output the certificate in human-readable format, even if -rfc is \
-also specified.
-ListCmd.6=Use RFC-1421 specifications when encoding the output.
-
-ImportCmd.34=Failed to establish chain-of-trust from reply
-ImportCmd.37=Unable to find anchor certificate for {0}
-ImportCmd.38=Public keys, in key store and certificate, MUST be of the same type
-ImportCmd.32=Can this certificate be trusted?
-ImportCmd.40=Key entry associated with {0} has an unknown or unsupported public key type {1}
-ImportCmd.41=Public keys, in key store and certificate, MUST be the same
-ImportCmd.29=Certificate was added to the key store
-ImportCmd.28=Certificate was not added to the key store
-ImportCmd.27=Usage: keytool -import [OPTION]...\n\
-Read an X.509 certificate, or a PKCS#7 Certificate Reply from a designated \
-input source and incorporate the certificates into the key store.
-ImportCmd.26=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-ImportCmd.25=Command options
-ImportCmd.24=If ALIAS does not already exist in the key store, the tool treats \
-the certificate in FILE as a new Trusted Certificate.\n\
-If ALIAS exists in the key store, the tool will treat the certificate(s) in \
-FILE as a Certificate Reply (which can be a chain of certificates).
-ImportCmd.23=ALIAS
-ImportCmd.22=Location of the Certificate or Certificate Reply to import.
-ImportCmd.21=FILE
-ImportCmd.20=Password to protect the Key Entry associated with ALIAS. If \
-this option is omitted, and the chain-of-trust for the Certificate Reply has \
-been established, the tool will first attempt to unlock the Key Entry using \
-the same password protecting the key store. If this fails, you will be \
-prompted to provide a password.
-ImportCmd.19=PASSWORD
-ImportCmd.18=Prevent the tool from prompting the user.
-ImportCmd.17=Additionally use a key store, of type "JKS", named "cacerts", \
-and located in lib/security in an installed Java Runtime Environment, when \
-trying to establish chains-of-trust.
-ImportCmd.16=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-ImportCmd.15=STORE_TYPE
-ImportCmd.14=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-ImportCmd.13=URL
-ImportCmd.12=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-ImportCmd.11=PASSWORD
-ImportCmd.10=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-ImportCmd.9=PROVIDER_CLASS_NAME
-ImportCmd.8=Emit more verbose messages.
-ImportCmd.7=Was unable to build a certificate-chain. Only {0,number} out of {1,number} certificates were processed
-
-ExportCmd.17=Usage: keytool -export [OPTION]...\n\
-Export a certificate stored in the key store to a designated output \
-destination, either in binary format or in RFC-1421 compliant encoding.
-ExportCmd.18=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-ExportCmd.19=Command options
-ExportCmd.20=Alias of an entry to export. The value "mykey" (all lower case, \
-without the enclosing quotes) is used when this option is omitted.
-ExportCmd.21=ALIAS
-ExportCmd.22=Destination of the exported certificate. STDOUT is used if this \
-option is omitted.
-ExportCmd.23=FILE
-ExportCmd.24=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-ExportCmd.25=STORE_TYPE
-ExportCmd.26=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-ExportCmd.27=URL
-ExportCmd.28=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-ExportCmd.29=PASSWORD
-ExportCmd.30=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-ExportCmd.31=PROVIDER_CLASS_NAME
-ExportCmd.32=Use RFC-1421 specifications when encoding the output.
-ExportCmd.33=Output the certificate in binary DER encoding, which is the \
-default format. If -rfc is also present, this option is ignored.
-
-IdentityDBCmd.7=Usage: keytool -identitydb [OPTION]...\n\
-NOT IMPLEMENTED YET. Import a JDK 1.1 style Identity Database.
-IdentityDBCmd.8=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-IdentityDBCmd.9=Command options
-IdentityDBCmd.10=Location of the Identity Database to import. If omitted, \
-STDIN is used.
-IdentityDBCmd.11=FILE
-IdentityDBCmd.12=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-IdentityDBCmd.13=STORE_TYPE
-IdentityDBCmd.14=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-IdentityDBCmd.15=URL
-IdentityDBCmd.16=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-IdentityDBCmd.17=PASSWORD
-IdentityDBCmd.18=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-IdentityDBCmd.19=PROVIDER_CLASS_NAME
-IdentityDBCmd.20=Emit more verbose messages.
-
-PrintCertCmd.5=Usage: keytool -printcert [OPTION]...\n\
-Read a certificate from FILE and print it to STDOUT in a human-readable form.
-PrintCertCmd.6=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-PrintCertCmd.7=Command options
-PrintCertCmd.8=Location of the certificate to print. If omitted, STDIN is used.
-PrintCertCmd.9=FILE
-PrintCertCmd.10=Emit more verbose messages.
-
-SelfCertCmd.14=Usage: keytool -selfcert [OPTION]...\n\
-Generate a self-signed X.509 version 1 certificate.\n\n\
-The newly generated certificate will form a chain of one element which will \
-replace the previous chain associated with ALIAS.
-SelfCertCmd.15=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-SelfCertCmd.16=Command options
-SelfCertCmd.17=Alias of the Key Entry to select. The value "mykey" (all lower \
-case, without the enclosing quotes) is used when this option is omitted.
-SelfCertCmd.18=ALIAS
-SelfCertCmd.19=Name of the digital signature algorithm to use for signing the \
-certificate. If omitted, a default value is chosen based on the type of the \
-private key associated with ALIAS. If the key is a "DSA" one, the value for \
-signature algorithm will be "SHA1withDSA". If on the other hand the key is \
-an "RSA" one, then "MD5withRSA" will be the signature algorithm.
-SelfCertCmd.20=ALGORITHM
-SelfCertCmd.21=The X.500 Distinguished Name of the Subject of the generated \
-certificate. If omitted the Distinguished Name of the base certificate in \
-the chain associated with ALIAS is used instead.
-SelfCertCmd.22=NAME
-SelfCertCmd.23=Password to unlock the Key Entry associated with ALIAS. If \
-omitted, the tool will attempt to unlock the Key Entry using the same password \
-protecting the key store. If this fails, you will be prompted for a password.
-SelfCertCmd.24=PASSWORD
-SelfCertCmd.25=Number of days the generated certificate is valid for. If \
-omitted, 90 is used.
-SelfCertCmd.26=DAY_COUNT
-SelfCertCmd.27=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-SelfCertCmd.28=STORE_TYPE
-SelfCertCmd.29=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-SelfCertCmd.30=URL
-SelfCertCmd.31=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-SelfCertCmd.32=PASSWORD
-SelfCertCmd.33=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-SelfCertCmd.34=PROVIDER_CLASS_NAME
-SelfCertCmd.35=Emit more verbose messages.
-
-CACertCmd.0=Alias [{0}] is already present in key store
-CACertCmd.1=Certificate in file "{0}" was added to the key store under the alias "{1}"
-CACertCmd.2=Usage: keytool -cacert [OPTION]...\n\
-Import a trusted CA certificate.
-CACertCmd.3=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
-CACertCmd.4=Command options
-CACertCmd.5=Location of the trusted CA certificate to import.
-CACertCmd.6=FILE
-CACertCmd.7=Type of the key store to use. If omitted, the default value is \
-that of the property "keystore.type" in the security properties file.
-CACertCmd.8=STORE_TYPE
-CACertCmd.9=Location of the key store to use. The default value is a \
-file-based scheme whose path is the file named ".keystore" in your home \
-directory.\n\
-If URL is malformed, the tool will use URL as a file-name of a key store; \
-i.e. as if the protocol was "file:".
-CACertCmd.10=URL
-CACertCmd.11=Password to unlock the key store. If omitted, you will be \
-prompted for one.
-CACertCmd.12=PASSWORD
-CACertCmd.13=Fully qualified class name of a Security Provider to add to the \
-JVM in-use.
-CACertCmd.14=PROVIDER_CLASS_NAME
-CACertCmd.15=Emit more verbose messages.
+++ /dev/null
-# messages.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.
-
-Native2ASCII.TooManyFiles=too many files specified
-Native2ASCII.Usage=Usage: native2ascii [OPTIONS]... [INPUTFILE [OUTPUTFILE]]
-Native2ASCII.EncodingHelp=encoding to use
-Native2ASCII.EncodingArgName=NAME
-Native2ASCII.EncodingSpecified=encoding already specified
-Native2ASCII.ReversedHelp=convert from encoding to native
-Native2ASCII.ReversedHelpCompat=alias for -reverse (deprecated)
+++ /dev/null
-# messages.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.
-
-Main.Usage=Usage: orbd [OPTIONS]
-Main.ORBInitialPort=port on which persistent naming service is to be started
-Main.Port=PORT
-Main.IOR=file in which to store persistent naming service's IOR reference
-Main.IORFile=FILE
-Main.Restart=restart persistent naming service, clearing persistent naming database
-Main.Directory=directory in which to store persistent data
-Main.DirectoryArgument=DIRECTORY
-Main.InternalError=orbd: internal error:
+++ /dev/null
-# messages.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.
-
-Main.Usage:rmic [OPTIONS] CLASSNAME...
-Main.NoWarn:show no warnings
-Main.NoWrite:check for errors and do not write any files
-Main.Verbose:show verbose output
-Main.DirOpt:write generated files to given directory
-Main.DirArg:DIRECTORY
-Main.ClasspathOpt:where to find input classes
-Main.ClasspathArg:PATH
-Main.BootclasspathOpt:where to find classes used to run rmic (ignored)
-Main.BootclasspathArg:PATH
-Main.ExtdirsOpt:where to find extension classes used to run rmic (ignored)
-Main.ExtdirsArg:PATH
-Main.IIOP:generate stubs and ties for IIOP
-Main.Always:always overwrite generated files (ignored)
-Main.AlwaysGenerate:same as -always
-Main.NoLocalStubs:do not create same-process stubs (ignored)
-Main.POA:generate servant-based ties
-Main.Keep:keep generated stub, skeleton and tie sources
-Main.KeepGenerated:same as -keep
-Main.v11:generate JDK 1.1 protocol stubs and skeletons
-Main.v12:generate JDK 1.2 JRMP stubs (default)
-Main.vcompat:generate JDK 1.1 protocol and JDK 1.2 JRMP stubs
-Main.DebugInfo:include debugging information in generated classes
-Main.InternalError:rmic: internal error:
+++ /dev/null
-# messages.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.
-
-Main.Usage=Usage: rmid [OPTIONS]
-Main.ControlGroup=Activation process control
-Main.PortOption=port on which activation system is to be started
-Main.Port=PORT
-Main.Restart=restart activation system, clearing persistent naming database, if any
-Main.Stop=stop activation system
-Main.PersistenceGroup=Persistence
-Main.Persistent=make activation system persistent
-Main.Directory=directory in which to store persistent data
-Main.DirectoryArgument=DIRECTORY
-Main.DebugGroup=Debugging
-Main.Verbose=log binding events to standard out
-Main.InternalError=rmid: internal error:
+++ /dev/null
-# messages.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.
-
-Main.Usage=Usage: rmiregistry [OPTIONS] [PORT]
-Main.ControlGroup=Registry process control
-Main.Restart=restart RMI naming service, clearing persistent naming database, if any
-Main.Stop=stop RMI naming service
-Main.PersistenceGroup=Persistence
-Main.Persistent=make RMI naming service persistent
-Main.Directory=directory in which to store persistent data
-Main.DirectoryArgument=DIRECTORY
-Main.DebugGroup=Debugging
-Main.Verbose=log binding events to standard out
-Main.InternalError=rmiregistry: internal error:
+++ /dev/null
-# messages.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.
-
-SerialVer.NoClassesSpecd=no classes specified
-SerialVer.HelpHeader=serialver [OPTIONS]... CLASS...\n\nPrint the serialVersionUID of the specified classes
-SerialVer.5=classpath
-SerialVer.ClasspathHelp=class path to use to find classes
-SerialVer.ClassNotSerial=serialver: class {0} is not serializable
-SerialVer.ClassNotFound=serialver: class {0} not found
-SerialVer.DupClasspath=classpath already specified
+++ /dev/null
-# messages.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.
-
-Main.Usage=Usage: tnameserv [OPTIONS]
-Main.ORBInitialPort=port on which naming service is to be started
-Main.Port=PORT
-Main.IOR=file in which to store naming service's IOR reference
-Main.IORFile=FILE
-Main.InternalError=tnameserv: internal error:
--- /dev/null
+# fonts.properties
+# Copyright (C) 2007 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.
+
+# List of available fonts.
+FreeMono/p=/usr/share/fonts/truetype/freefont/FreeMono.ttf
+FreeMono/b=/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
+FreeMono/bi=/usr/share/fonts/truetype/freefont/FreeMonoBoldOblique.ttf
+FreeMono/i=/usr/share/fonts/truetype/freefont/FreeMonoOblique.ttf
+
+FreeSans/p=/usr/share/fonts/truetype/freefont/FreeSans.ttf
+FreeSans/b=/usr/share/fonts/truetype/freefont/FreeSansBold.ttf
+FreeSans/bi=/usr/share/fonts/truetype/freefont/FreeSansBoldOblique.ttf
+FreeSans/i=/usr/share/fonts/truetype/freefont/FreeSansOblique.ttf
+
+FreeSerif/p=/usr/share/fonts/truetype/freefont/FreeSerif.ttf
+FreeSerif/b=/usr/share/fonts/truetype/freefont/FreeSerifBold.ttf
+FreeSerif/bi=/usr/share/fonts/truetype/freefont/FreeSerifBoldOblique.ttf
+FreeSerif/i=/usr/share/fonts/truetype/freefont/FreeSerifOblique.ttf
+
+# List of aliases.
+Dialog/a=FreeSans
+DialogInput/a=FreeSans
+Serif/a=FreeSerif
+SansSerif/a=FreeSans
+Monospaced/a=FreeMono
--- /dev/null
+
+serif.plain=-adobe-times-medium-r-normal--%d-*-*-*-p-*-iso8859-1
+serif.bold=-adobe-times-bold-r-normal--%d-*-*-*-p-*-iso8859-1
+serif.italic=-adobe-times-medium-o-normal--%d-*-*-*-p-*-iso8859-1
+serif.bolditalic=-adobe-times-bold-o-normal--%d-*-*-*-p-*-iso8859-1
+
+sansserif.plain=-adobe-helvetica-medium-r-normal--%d-*-*-*-p-*-iso8859-1
+sansserif.bold=-adobe-helvetica-bold-r-normal--%d-*-*-*-p-*-iso8859-1
+sansserif.italic=-adobe-helvetica-medium-o-normal--%d-*-*-*-p-*-iso8859-1
+sansserif.bolditalic=-adobe-helvetica-bold-o-normal--%d-*-*-*-p-*-iso8859-1
+
+monospaced.plain=-adobe-courier-medium-r-normal--%d-*-*-*-p-*-iso8859-1
+monospaced.bold=-adobe-courier-bold-r-normal--%d-*-*-*-p-*-iso8859-1
+monospaced.italic=-adobe-courier-medium-o-normal--%d-*-*-*-p-*-iso8859-1
+monospaced.bolditalic=-adobe-courier-bold-o-normal--%d-*-*-*-p-*-iso8859-1
+
+dialog.plain=-adobe-helvetica-medium-r-normal--%d-*-*-*-p-*-iso8859-1
+dialog.bold=-adobe-helvetica-bold-r-normal--%d-*-*-*-p-*-iso8859-1
+dialog.italic=-adobe-helvetica-medium-o-normal--%d-*-*-*-p-*-iso8859-1
+dialog.bolditalic=-adobe-helvetica-bold-o-normal--%d-*-*-*-p-*-iso8859-1
+
+dialoginput.plain=-adobe-helvetica-medium-r-normal--%d-*-*-*-p-*-iso8859-1
+dialoginput.bold=-adobe-helvetica-bold-r-normal--%d-*-*-*-p-*-iso8859-1
+dialoginput.italic=-adobe-helvetica-medium-o-normal--%d-*-*-*-p-*-iso8859-1
+dialoginput.bolditalic=-adobe-helvetica-bold-o-normal--%d-*-*-*-p-*-iso8859-1
+++ /dev/null
-# messages.properties -- English language messages
-# Copyright (C) 2007 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.
-
-Main.InternalError:sun.rmi.rmic: failed to run rmic main method
-EXTRA_DIST = check_jni_methods.sh generate-locale-list.sh import-cacerts.sh
+EXTRA_DIST = generate-locale-list.sh import-cacerts.sh
target_triplet = @target@
subdir = scripts
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/classpath.spec.in
+ $(srcdir)/check_jni_methods.sh.in $(srcdir)/classpath.spec.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
$(top_srcdir)/../../config/lead-dot.m4 \
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
-CONFIG_CLEAN_FILES = classpath.spec
+CONFIG_CLEAN_FILES = classpath.spec check_jni_methods.sh
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
target_vendor = @target_vendor@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
-EXTRA_DIST = check_jni_methods.sh generate-locale-list.sh import-cacerts.sh
+EXTRA_DIST = generate-locale-list.sh import-cacerts.sh
all: all-am
.SUFFIXES:
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
classpath.spec: $(top_builddir)/config.status $(srcdir)/classpath.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+check_jni_methods.sh: $(top_builddir)/config.status $(srcdir)/check_jni_methods.sh.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
+++ /dev/null
-#!/bin/sh
-
-# Fail if any command fails
-set -e
-
-TMPFILE=/tmp/check-jni-methods.$$.1
-TMPFILE2=/tmp/check-jni-methods.$$.2
-TMPFILE3=/tmp/check-jni-methods.$$.3
-
-# Find all methods defined in the header files generated
-# from the java source files.
-grep -h '^JNIEXPORT .* Java_' include/*.h | \
- LC_ALL=C sed -e 's,.*JNICALL \(Java_[a-z_A-Z0-9]*\).*$,\1,' | \
- sort > $TMPFILE
-
-# Find all methods in the JNI C source files.
-find native/jni -name \*.c | \
- xargs grep -h '^Java_' | \
- LC_ALL=C sed -e 's,^\(Java_[a-z_A-Z0-9]*\).*$,\1,' > $TMPFILE2
-# Or in the the C++ files. (Note that cpp doesn't follow gnu conventions atm)
-# So we try to match both GNU style and some other style.
-find native/jni -name \*.cpp | \
- xargs grep -h '^Java_' | \
- LC_ALL=C sed -e 's,^\(Java_[a-z_A-Z0-9]*\).*$,\1,' >> $TMPFILE2
-find native/jni -name \*.cpp | \
- xargs egrep -h '^(JNIEXPORT .* JNICALL )?Java_' | \
- cut -f4 -d\ | \
- LC_ALL=C sed -e 's,^\JNIEXPORT .* JNICALL \(Java_[a-z_A-Z0-9]*\).*$,\1,' >> $TMPFILE2
-mv $TMPFILE2 $TMPFILE3
-sort $TMPFILE3 | uniq > $TMPFILE2
-rm $TMPFILE3
-
-# Write temporary ignore file.
-cat > $TMPFILE3 << EOF
--Java_gnu_java_awt_peer_gtk_GtkMenuComponentPeer_dispose
--Java_java_lang_VMSystem_arraycopy
--Java_java_lang_VMSystem_identityHashCode
-EOF
-
-# Compare again silently.
-# Use fgrep and direct the output to /dev/null for compatibility with older
-# grep instead of using the non portable -q.
-if diff -U 0 $TMPFILE $TMPFILE2 | grep '^[+-]Java' | \
- fgrep -v -f $TMPFILE3 > /dev/null;
-then
- PROBLEM=1
- echo "Found a problem with the JNI methods declared and implemented."
- echo "(-) missing in implementation, (+) missing in header files"
-
- # Compare the found method lists.
- diff -U 0 $TMPFILE $TMPFILE2 | grep '^[+-]Java' | fgrep -v -f $TMPFILE3
-fi
-
-# Cleanup.
-rm -f $TMPFILE $TMPFILE2 $TMPFILE3
-
-if test "$PROBLEM" = "1" ; then
- exit 1
-fi
-
-exit 0
--- /dev/null
+#!/bin/sh
+
+# Fail if any command fails
+set -e
+
+TMPFILE=/tmp/check-jni-methods.$$.1
+TMPFILE2=/tmp/check-jni-methods.$$.2
+TMPFILE3=/tmp/check-jni-methods.$$.3
+
+# Find all methods defined in the header files generated
+# from the java source files.
+grep -h '^JNIEXPORT .* Java_' @abs_top_builddir@/include/*.h @abs_top_srcdir@/include/*.h | \
+ LC_ALL=C sed -e 's,.*JNICALL \(Java_[a-z_A-Z0-9]*\).*$,\1,' | \
+ sort -u > $TMPFILE
+
+# Find all methods in the JNI C source files.
+find @abs_top_srcdir@/native/jni -name \*.c | \
+ xargs grep -h '^Java_' | \
+ LC_ALL=C sed -e 's,^\(Java_[a-z_A-Z0-9]*\).*$,\1,' > $TMPFILE2
+# Or in the the C++ files. (Note that cpp doesn't follow gnu conventions atm)
+# So we try to match both GNU style and some other style.
+find @abs_top_srcdir@/native/jni -name \*.cpp | \
+ xargs grep -h '^Java_' | \
+ LC_ALL=C sed -e 's,^\(Java_[a-z_A-Z0-9]*\).*$,\1,' >> $TMPFILE2
+find @abs_top_srcdir@/native/jni -name \*.cpp | \
+ xargs egrep -h '^(JNIEXPORT .* JNICALL )?Java_' | \
+ cut -f4 -d\ | \
+ LC_ALL=C sed -e 's,^\JNIEXPORT .* JNICALL \(Java_[a-z_A-Z0-9]*\).*$,\1,' >> $TMPFILE2
+mv $TMPFILE2 $TMPFILE3
+sort $TMPFILE3 | uniq > $TMPFILE2
+rm $TMPFILE3
+
+# Write temporary ignore file.
+cat > $TMPFILE3 << EOF
+-Java_gnu_java_awt_peer_gtk_GtkMenuComponentPeer_dispose
+-Java_java_lang_VMSystem_arraycopy
+-Java_java_lang_VMSystem_identityHashCode
+EOF
+
+# Compare again silently.
+# Use fgrep and direct the output to /dev/null for compatibility with older
+# grep instead of using the non portable -q.
+if diff -U 0 $TMPFILE $TMPFILE2 | grep '^[+-]Java' | \
+ fgrep -v -f $TMPFILE3 > /dev/null;
+then
+ PROBLEM=1
+ echo "Found a problem with the JNI methods declared and implemented."
+ echo "(-) missing in implementation, (+) missing in header files"
+
+ # Compare the found method lists.
+ diff -U 0 $TMPFILE $TMPFILE2 | grep '^[+-]Java' | fgrep -v -f $TMPFILE3
+fi
+
+# Cleanup.
+rm -f $TMPFILE $TMPFILE2 $TMPFILE3
+
+if test "$PROBLEM" = "1" ; then
+ exit 1
+fi
+
+exit 0
package sun.reflect.annotation;
-import gnu.classpath.NotImplementedException;
-
public class ExceptionProxy
{
## GCJ LOCAL: use srcdir to find core classes.
GLIBJ_BOOTCLASSPATH='$(top_srcdir)/lib'
-GLIBJ_CLASSPATH=$(srcdir)/asm
+GLIBJ_CLASSPATH=.:$(srcdir)/asm
## END GCJ LOCAL
# Setup the compiler to use the GNU Classpath library we just build
-if FOUND_GCJ
-JCOMPILER = $(GCJ) -C -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH):.
-else
-if FOUND_ECJ
-JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath .:$(GLIBJ_CLASSPATH)
-else
-if FOUND_JAVAC
-JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath .:$(GLIBJ_CLASSPATH)
-else
-error dunno how to setup the JCOMPILER and compile
-endif # FOUND_JAVAC
-endif # FOUND_ECJ
-endif # FOUND_GCJ
+## GCJ LOCAL: don't pass $(JAVACFLAGS) -source 1.5 -target 1.5
+JCOMPILER = $(JAVAC) -g -w --encoding=UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH)
if CREATE_WRAPPERS
bin_SCRIPTS =
$(srcdir)/external/asm/org/objectweb/asm/util/attrs/*.java \
$(srcdir)/external/asm/org/objectweb/asm/xml/*.java
+# Properties files that must be included in the generated zip file.
+PROPERTY_FILES = $(srcdir)/external/asm/org/objectweb/asm/optimizer/shrink.properties \
+ $(srcdir)/resource/com/sun/tools/javac/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/jar/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/orbd/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/rmic/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/rmid/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/serialver/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/keytool/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/native2ascii/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/appletviewer/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/common/Messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/getopt/Messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/tnameserv/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/jarsigner/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/rmiregistry/messages.properties \
+ $(srcdir)/resource/sun/rmi/rmic/messages.properties
+
+# RMIC templates that must be included in the generated zip file.
+RMIC_TEMPLATES = $(srcdir)/resource/gnu/classpath/tools/rmic/templates/*.jav
+
# The zip files with classes we want to produce.
TOOLS_ZIP = tools.zip
# Extra objects that will not exist until configure-time
BUILT_SOURCES = $(TOOLS_ZIP)
-# RMIC templates that must be included in the generated zip file.
-RMIC_TEMPLATES = $(srcdir)/gnu/classpath/tools/rmic/templates/*.jav
-
# All the files we find "interesting"
-ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(RMIC_TEMPLATES)
+ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(RMIC_TEMPLATES) $(PROPERTY_FILES)
# Some architecture independent data to be installed.
# GCJ LOCAL: do not install this.
# the class files. Always regenerate all .class files and remove them
# immediately. And copy the template files we use to the classes dir
# so they get also included.
-$(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
+$(TOOLS_ZIP): $(ALL_TOOLS_FILES)
## GCJ LOCAL: put classes in srcdir
## @rm -rf classes asm
## mkdir classes asm
$$AC -g -w -d $(srcdir)/asm @asm.lst
$(JCOMPILER) -g -w -d $(srcdir)/classes @classes.lst @vm-tools.lst
## Copy over tools resource files.
- @list=`cd $(top_srcdir)/resource && find gnu/classpath/tools \
- com/sun/javadoc com/sun/tools/doclets com/sun/tools/javac \
- sun/rmi/rmic -name \*.properties -print`; \
+ @list=`cd $(srcdir)/resource && find gnu/classpath/tools com/sun/tools/javac \
+ sun/rmi/rmic -name \*.properties -print -o -name \*.jav -print`; \
for p in $$list; do \
dirname=classes/`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
- echo " cp $(top_srcdir)/resource/$$p classes/$$p"; \
- cp $(top_srcdir)/resource/$$p classes/$$p; \
+ echo " cp $(srcdir)resource/$$p classes/$$p"; \
+ cp $(srcdir)/resource/$$p classes/$$p; \
done
endif
## Copy over rmic template files.
## First add classpath tools stuff.
(cd classes; \
if test "$(ZIP)" != ""; then $(ZIP) -r ../$(TOOLS_ZIP) .; fi; \
- if test "$(FASTJAR)" != ""; then $(FASTJAR) cf ../$(TOOLS_ZIP) .; fi; \
+ if test "$(FASTJAR)" != ""; then "$(FASTJAR)" cf ../$(TOOLS_ZIP) .; fi; \
cd ..)
## Now add ASM classes.
(cd asm; \
if test "$(ZIP)" != ""; then $(ZIP) -u -r ../$(TOOLS_ZIP) .; fi; \
- if test "$(FASTJAR)" != ""; then $(FASTJAR) uf ../$(TOOLS_ZIP) .; fi; \
+ if test "$(FASTJAR)" != ""; then "$(FASTJAR)" uf ../$(TOOLS_ZIP) .; fi; \
cd ..)
rm -rf asm classes classes.lst asm.lst
$(top_srcdir)/../../ltoptions.m4 \
$(top_srcdir)/../../ltsugar.m4 \
$(top_srcdir)/../../ltversion.m4 \
+ $(top_srcdir)/m4/ac_prog_javac.m4 \
+ $(top_srcdir)/m4/ac_prog_javac_works.m4 \
$(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \
$(top_srcdir)/m4/acinclude.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
-ECJ = @ECJ@
ECJ_JAR = @ECJ_JAR@
EGREP = @EGREP@
ENABLE_LOCAL_SOCKETS_FALSE = @ENABLE_LOCAL_SOCKETS_FALSE@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
-FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
-FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
-FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@
-FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@
-FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@
-FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@
-FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@
-FOUND_KJC_FALSE = @FOUND_KJC_FALSE@
-FOUND_KJC_TRUE = @FOUND_KJC_TRUE@
FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
FREETYPE2_LIBS = @FREETYPE2_LIBS@
-GCJ = @GCJ@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GDK_CFLAGS = @GDK_CFLAGS@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAVAC = @JAVAC@
+JAVAC_MEM_OPT = @JAVAC_MEM_OPT@
JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
JAY = @JAY@
JAY_SKELETON = @JAY_SKELETON@
-JIKES = @JIKES@
-JIKESENCODING = @JIKESENCODING@
-JIKESWARNINGS = @JIKESWARNINGS@
-KJC = @KJC@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBDEBUG = @LIBDEBUG@
SHELL = @SHELL@
STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@
STRIP = @STRIP@
-USER_CLASSLIB = @USER_CLASSLIB@
+TOOLSDIR = @TOOLSDIR@
USER_JAVAH = @USER_JAVAH@
-USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
-USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
GLIBJ_BOOTCLASSPATH = '$(top_srcdir)/lib'
-GLIBJ_CLASSPATH = $(srcdir)/asm
-@FOUND_ECJ_FALSE@@FOUND_GCJ_FALSE@@FOUND_JAVAC_TRUE@JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath .:$(GLIBJ_CLASSPATH)
-@FOUND_ECJ_TRUE@@FOUND_GCJ_FALSE@JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath .:$(GLIBJ_CLASSPATH)
+GLIBJ_CLASSPATH = .:$(srcdir)/asm
# Setup the compiler to use the GNU Classpath library we just build
-@FOUND_GCJ_TRUE@JCOMPILER = $(GCJ) -C -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH):.
+JCOMPILER = $(JAVAC) -g -w --encoding=UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH)
@CREATE_WRAPPERS_TRUE@bin_SCRIPTS =
@CREATE_WRAPPERS_TRUE@AM_CPPFLAGS = -Wall \
@CREATE_WRAPPERS_TRUE@ -I$(top_srcdir)/include \
$(srcdir)/external/asm/org/objectweb/asm/xml/*.java
+# Properties files that must be included in the generated zip file.
+PROPERTY_FILES = $(srcdir)/external/asm/org/objectweb/asm/optimizer/shrink.properties \
+ $(srcdir)/resource/com/sun/tools/javac/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/jar/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/orbd/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/rmic/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/rmid/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/serialver/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/keytool/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/native2ascii/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/appletviewer/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/common/Messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/getopt/Messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/tnameserv/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/jarsigner/messages.properties \
+ $(srcdir)/resource/gnu/classpath/tools/rmiregistry/messages.properties \
+ $(srcdir)/resource/sun/rmi/rmic/messages.properties
+
+
+# RMIC templates that must be included in the generated zip file.
+RMIC_TEMPLATES = $(srcdir)/resource/gnu/classpath/tools/rmic/templates/*.jav
+
# The zip files with classes we want to produce.
TOOLS_ZIP = tools.zip
# Extra objects that will not exist until configure-time
BUILT_SOURCES = $(TOOLS_ZIP)
-# RMIC templates that must be included in the generated zip file.
-RMIC_TEMPLATES = $(srcdir)/gnu/classpath/tools/rmic/templates/*.jav
-
# All the files we find "interesting"
-ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(RMIC_TEMPLATES)
+ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(RMIC_TEMPLATES) $(PROPERTY_FILES)
# Some architecture independent data to be installed.
# GCJ LOCAL: do not install this.
pdf pdf-am ps ps-am tags uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-info-am
-@FOUND_ECJ_FALSE@@FOUND_GCJ_FALSE@@FOUND_JAVAC_FALSE@error dunno how to setup the JCOMPILER and compile
@CREATE_WRAPPERS_FALSE@gappletviewer: gappletviewer.in
@CREATE_WRAPPERS_FALSE@gjarsigner: gjarsigner.in
@CREATE_WRAPPERS_FALSE@gkeytool: gkeytool.in
# the class files. Always regenerate all .class files and remove them
# immediately. And copy the template files we use to the classes dir
# so they get also included.
-$(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
+$(TOOLS_ZIP): $(ALL_TOOLS_FILES)
find $(srcdir)/external/asm -name '*.java' -print > asm.lst
find $(srcdir)/gnu/classpath/tools \
$(srcdir)/com/sun/javadoc \
@JAVA_MAINTAINER_MODE_TRUE@ AC=`echo $(JCOMPILER) | sed -e 's/UTF-8/ISO-8859-1/g'`; \
@JAVA_MAINTAINER_MODE_TRUE@ $$AC -g -w -d $(srcdir)/asm @asm.lst
@JAVA_MAINTAINER_MODE_TRUE@ $(JCOMPILER) -g -w -d $(srcdir)/classes @classes.lst @vm-tools.lst
-@JAVA_MAINTAINER_MODE_TRUE@ @list=`cd $(top_srcdir)/resource && find gnu/classpath/tools \
-@JAVA_MAINTAINER_MODE_TRUE@ com/sun/javadoc com/sun/tools/doclets com/sun/tools/javac \
-@JAVA_MAINTAINER_MODE_TRUE@ sun/rmi/rmic -name \*.properties -print`; \
+@JAVA_MAINTAINER_MODE_TRUE@ @list=`cd $(srcdir)/resource && find gnu/classpath/tools com/sun/tools/javac \
+@JAVA_MAINTAINER_MODE_TRUE@ sun/rmi/rmic -name \*.properties -print -o -name \*.jav -print`; \
@JAVA_MAINTAINER_MODE_TRUE@ for p in $$list; do \
@JAVA_MAINTAINER_MODE_TRUE@ dirname=classes/`dirname $$p`; \
@JAVA_MAINTAINER_MODE_TRUE@ if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
-@JAVA_MAINTAINER_MODE_TRUE@ echo " cp $(top_srcdir)/resource/$$p classes/$$p"; \
-@JAVA_MAINTAINER_MODE_TRUE@ cp $(top_srcdir)/resource/$$p classes/$$p; \
+@JAVA_MAINTAINER_MODE_TRUE@ echo " cp $(srcdir)resource/$$p classes/$$p"; \
+@JAVA_MAINTAINER_MODE_TRUE@ cp $(srcdir)/resource/$$p classes/$$p; \
@JAVA_MAINTAINER_MODE_TRUE@ done
@list=`cd $(srcdir) && find gnu/classpath/tools -name \*.jav -print`; \
for p in $$list; do \
cp -pR $(srcdir)/classes .
(cd classes; \
if test "$(ZIP)" != ""; then $(ZIP) -r ../$(TOOLS_ZIP) .; fi; \
- if test "$(FASTJAR)" != ""; then $(FASTJAR) cf ../$(TOOLS_ZIP) .; fi; \
+ if test "$(FASTJAR)" != ""; then "$(FASTJAR)" cf ../$(TOOLS_ZIP) .; fi; \
cd ..)
(cd asm; \
if test "$(ZIP)" != ""; then $(ZIP) -u -r ../$(TOOLS_ZIP) .; fi; \
- if test "$(FASTJAR)" != ""; then $(FASTJAR) uf ../$(TOOLS_ZIP) .; fi; \
+ if test "$(FASTJAR)" != ""; then "$(FASTJAR)" uf ../$(TOOLS_ZIP) .; fi; \
cd ..)
rm -rf asm classes classes.lst asm.lst
new PrintWriter(System.err),
Boolean.FALSE
});
+ String[] runArgs = new String[args.length + 1];
+ runArgs[0] = "-1.5";
+ System.arraycopy(args, 0, runArgs, 1, args.length);
return ((Boolean) ecjMethod.invoke(ecjInstance, new Object[]
- { args })).booleanValue() ? 0 : -1;
+ { runArgs })).booleanValue() ? 0 : -1;
}
public static int compile(String[] args) throws Exception
--- /dev/null
+# class mappings
+
+#org/objectweb/asm/Edge=org/objectweb/asm/a
+#org/objectweb/asm/Item=org/objectweb/asm/b
+#org/objectweb/asm/FieldWriter=org/objectweb/asm/c
+#org/objectweb/asm/MethodWriter=org/objectweb/asm/d
+#org/objectweb/asm/AnnotationWriter=org/objectweb/asm/e
+
+# field mappings
+
+org/objectweb/asm/AnnotationWriter.cw=a
+org/objectweb/asm/AnnotationWriter.size=b
+org/objectweb/asm/AnnotationWriter.named=c
+org/objectweb/asm/AnnotationWriter.bv=d
+org/objectweb/asm/AnnotationWriter.parent=e
+org/objectweb/asm/AnnotationWriter.offset=f
+org/objectweb/asm/AnnotationWriter.next=g
+org/objectweb/asm/AnnotationWriter.prev=h
+
+org/objectweb/asm/Attribute.next=a
+org/objectweb/asm/Attribute.value=b
+
+org/objectweb/asm/ByteVector.data=a
+org/objectweb/asm/ByteVector.length=b
+
+org/objectweb/asm/ClassReader.items=a
+org/objectweb/asm/ClassReader.strings=c
+org/objectweb/asm/ClassReader.maxStringLength=d
+#org/objectweb/asm/ClassReader.header=e
+
+org/objectweb/asm/ClassWriter.TYPE=a
+org/objectweb/asm/ClassWriter.version=b
+org/objectweb/asm/ClassWriter.index=c
+org/objectweb/asm/ClassWriter.pool=d
+org/objectweb/asm/ClassWriter.items=e
+org/objectweb/asm/ClassWriter.threshold=f
+org/objectweb/asm/ClassWriter.key=g
+org/objectweb/asm/ClassWriter.key2=h
+org/objectweb/asm/ClassWriter.key3=i
+org/objectweb/asm/ClassWriter.access=j
+org/objectweb/asm/ClassWriter.name=k
+org/objectweb/asm/ClassWriter.signature=l
+org/objectweb/asm/ClassWriter.superName=m
+org/objectweb/asm/ClassWriter.interfaceCount=n
+org/objectweb/asm/ClassWriter.interfaces=o
+org/objectweb/asm/ClassWriter.sourceFile=p
+org/objectweb/asm/ClassWriter.sourceDebug=q
+org/objectweb/asm/ClassWriter.enclosingMethodOwner=r
+org/objectweb/asm/ClassWriter.enclosingMethod=s
+org/objectweb/asm/ClassWriter.anns=t
+org/objectweb/asm/ClassWriter.ianns=u
+org/objectweb/asm/ClassWriter.attrs=v
+org/objectweb/asm/ClassWriter.innerClassesCount=w
+org/objectweb/asm/ClassWriter.innerClasses=x
+org/objectweb/asm/ClassWriter.firstField=y
+org/objectweb/asm/ClassWriter.lastField=z
+org/objectweb/asm/ClassWriter.firstMethod=A
+org/objectweb/asm/ClassWriter.lastMethod=B
+org/objectweb/asm/ClassWriter.computeMaxs=C
+org/objectweb/asm/ClassWriter.cr=D
+
+org/objectweb/asm/Edge.stackSize=a
+org/objectweb/asm/Edge.successor=b
+org/objectweb/asm/Edge.next=c
+
+org/objectweb/asm/Handler.start=a
+org/objectweb/asm/Handler.end=b
+org/objectweb/asm/Handler.handler=c
+org/objectweb/asm/Handler.desc=d
+org/objectweb/asm/Handler.type=e
+org/objectweb/asm/Handler.next=f
+
+org/objectweb/asm/FieldWriter.next=a
+org/objectweb/asm/FieldWriter.cw=b
+org/objectweb/asm/FieldWriter.access=c
+org/objectweb/asm/FieldWriter.name=d
+org/objectweb/asm/FieldWriter.desc=e
+org/objectweb/asm/FieldWriter.signature=f
+org/objectweb/asm/FieldWriter.value=g
+org/objectweb/asm/FieldWriter.anns=h
+org/objectweb/asm/FieldWriter.ianns=i
+org/objectweb/asm/FieldWriter.attrs=j
+
+org/objectweb/asm/Item.index=a
+org/objectweb/asm/Item.type=b
+org/objectweb/asm/Item.intVal=c
+org/objectweb/asm/Item.longVal=d
+org/objectweb/asm/Item.floatVal=e
+org/objectweb/asm/Item.doubleVal=f
+org/objectweb/asm/Item.strVal1=g
+org/objectweb/asm/Item.strVal2=h
+org/objectweb/asm/Item.strVal3=i
+org/objectweb/asm/Item.hashCode=j
+org/objectweb/asm/Item.next=k
+
+org/objectweb/asm/Label.resolved=a
+org/objectweb/asm/Label.position=b
+org/objectweb/asm/Label.resized=c
+org/objectweb/asm/Label.referenceCount=d
+org/objectweb/asm/Label.srcAndRefPositions=e
+org/objectweb/asm/Label.beginStackSize=f
+org/objectweb/asm/Label.maxStackSize=g
+org/objectweb/asm/Label.successors=h
+org/objectweb/asm/Label.next=i
+org/objectweb/asm/Label.pushed=j
+org/objectweb/asm/Label.line=k
+
+org/objectweb/asm/MethodWriter.next=a
+org/objectweb/asm/MethodWriter.cw=b
+org/objectweb/asm/MethodWriter.access=c
+org/objectweb/asm/MethodWriter.name=d
+org/objectweb/asm/MethodWriter.desc=e
+org/objectweb/asm/MethodWriter.descriptor=f
+org/objectweb/asm/MethodWriter.signature=g
+org/objectweb/asm/MethodWriter.exceptionCount=h
+org/objectweb/asm/MethodWriter.exceptions=i
+org/objectweb/asm/MethodWriter.annd=j
+org/objectweb/asm/MethodWriter.anns=k
+org/objectweb/asm/MethodWriter.ianns=l
+org/objectweb/asm/MethodWriter.panns=m
+org/objectweb/asm/MethodWriter.ipanns=n
+org/objectweb/asm/MethodWriter.attrs=o
+org/objectweb/asm/MethodWriter.code=p
+org/objectweb/asm/MethodWriter.maxStack=q
+org/objectweb/asm/MethodWriter.maxLocals=r
+org/objectweb/asm/MethodWriter.catchCount=s
+org/objectweb/asm/MethodWriter.catchTable=t
+org/objectweb/asm/MethodWriter.localVarCount=u
+org/objectweb/asm/MethodWriter.localVar=v
+org/objectweb/asm/MethodWriter.localVarTypeCount=w
+org/objectweb/asm/MethodWriter.localVarType=x
+org/objectweb/asm/MethodWriter.lineNumberCount=y
+org/objectweb/asm/MethodWriter.lineNumber=z
+org/objectweb/asm/MethodWriter.cattrs=A
+org/objectweb/asm/MethodWriter.resize=B
+org/objectweb/asm/MethodWriter.computeMaxs=C
+org/objectweb/asm/MethodWriter.stackSize=D
+org/objectweb/asm/MethodWriter.maxStackSize=E
+org/objectweb/asm/MethodWriter.currentBlock=F
+org/objectweb/asm/MethodWriter.blockStack=G
+org/objectweb/asm/MethodWriter.SIZE=H
+org/objectweb/asm/MethodWriter.classReaderOffset=I
+org/objectweb/asm/MethodWriter.classReaderLength=J
+org/objectweb/asm/MethodWriter.lastHandler=K
+
+org/objectweb/asm/Type.sort=a
+org/objectweb/asm/Type.buf=b
+org/objectweb/asm/Type.off=c
+org/objectweb/asm/Type.len=d
+
+org/objectweb/asm/signature/SignatureReader.signature=a
+
+org/objectweb/asm/signature/SignatureWriter.buf=a
+org/objectweb/asm/signature/SignatureWriter.hasFormals=b
+org/objectweb/asm/signature/SignatureWriter.hasParameters=c
+org/objectweb/asm/signature/SignatureWriter.argumentStack=d
+
+# method mappings
+
+org/objectweb/asm/AnnotationWriter.getSize()I=a
+org/objectweb/asm/AnnotationWriter.put([Lorg/objectweb/asm/AnnotationWriter;Lorg/objectweb/asm/ByteVector;)V=a
+org/objectweb/asm/AnnotationWriter.put(Lorg/objectweb/asm/ByteVector;)V=a
+
+org/objectweb/asm/Attribute.getCount()I=a
+org/objectweb/asm/Attribute.getSize(Lorg/objectweb/asm/ClassWriter;[BIII)I=a
+org/objectweb/asm/Attribute.put(Lorg/objectweb/asm/ClassWriter;[BIIILorg/objectweb/asm/ByteVector;)V=a
+
+org/objectweb/asm/ByteVector.enlarge(I)V=a
+org/objectweb/asm/ByteVector.put11(II)Lorg/objectweb/asm/ByteVector;=a
+org/objectweb/asm/ByteVector.put12(II)Lorg/objectweb/asm/ByteVector;=b
+
+org/objectweb/asm/ClassReader.copyPool(Lorg/objectweb/asm/ClassWriter;)V=a
+org/objectweb/asm/ClassReader.readAnnotationValue(I[CLjava/lang/String;Lorg/objectweb/asm/AnnotationVisitor;)I=a
+org/objectweb/asm/ClassReader.readAnnotationValues(I[CLorg/objectweb/asm/AnnotationVisitor;)I=a
+org/objectweb/asm/ClassReader.readAttribute([Lorg/objectweb/asm/Attribute;Ljava/lang/String;II[CI[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Attribute;=a
+org/objectweb/asm/ClassReader.readClass(Ljava/io/InputStream;)[B=a
+org/objectweb/asm/ClassReader.readParameterAnnotations(I[CZLorg/objectweb/asm/MethodVisitor;)V=a
+org/objectweb/asm/ClassReader.readUTF(II[C)Ljava/lang/String;=a
+
+org/objectweb/asm/ClassWriter.get(Lorg/objectweb/asm/Item;)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newClassItem(Ljava/lang/String;)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newConstItem(Ljava/lang/Object;)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newDouble(D)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newFloat(F)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newInteger(I)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newLong(J)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newMethodItem(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Item;=a
+org/objectweb/asm/ClassWriter.newString(Ljava/lang/String;)Lorg/objectweb/asm/Item;=b
+org/objectweb/asm/ClassWriter.put122(III)V=a
+org/objectweb/asm/ClassWriter.put(Lorg/objectweb/asm/Item;)V=b
+
+org/objectweb/asm/FieldWriter.getSize()I=a
+org/objectweb/asm/FieldWriter.put(Lorg/objectweb/asm/ByteVector;)V=a
+
+org/objectweb/asm/Item.isEqualTo(Lorg/objectweb/asm/Item;)Z=a
+org/objectweb/asm/Item.set(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V=a
+org/objectweb/asm/Item.set(D)V=a
+org/objectweb/asm/Item.set(F)V=a
+org/objectweb/asm/Item.set(I)V=a
+org/objectweb/asm/Item.set(J)V=a
+
+org/objectweb/asm/Label.addReference(II)V=a
+org/objectweb/asm/Label.put(Lorg/objectweb/asm/MethodWriter;Lorg/objectweb/asm/ByteVector;IZ)V=a
+org/objectweb/asm/Label.resolve(Lorg/objectweb/asm/MethodWriter;I[B)Z=a
+
+org/objectweb/asm/MethodWriter.addSuccessor(ILorg/objectweb/asm/Label;)V=a
+org/objectweb/asm/MethodWriter.getArgumentsAndReturnSizes(Ljava/lang/String;)I=a
+org/objectweb/asm/MethodWriter.getNewOffset([I[III)I=a
+org/objectweb/asm/MethodWriter.getSize()I=a
+org/objectweb/asm/MethodWriter.put(Lorg/objectweb/asm/ByteVector;)V=a
+org/objectweb/asm/MethodWriter.readInt([BI)I=a
+org/objectweb/asm/MethodWriter.readShort([BI)S=b
+org/objectweb/asm/MethodWriter.readUnsignedShort([BI)I=c
+org/objectweb/asm/MethodWriter.resizeInstructions([I[II)[I=a
+org/objectweb/asm/MethodWriter.writeShort([BII)V=a
+org/objectweb/asm/MethodWriter.getNewOffset([I[ILorg/objectweb/asm/Label;)V=a
+
+org/objectweb/asm/Type.getType([CI)Lorg/objectweb/asm/Type;=a
+org/objectweb/asm/Type.getDescriptor(Ljava/lang/StringBuffer;)V=a
+org/objectweb/asm/Type.getDescriptor(Ljava/lang/StringBuffer;Ljava/lang/Class;)V=a
+
+org/objectweb/asm/signature/SignatureReader.parseType(Ljava/lang/String;ILorg/objectweb/asm/signature/SignatureVisitor;)I=a
+
+org/objectweb/asm/signature/SignatureWriter.endFormals()V=a
+org/objectweb/asm/signature/SignatureWriter.endArguments()V=b
*/
public String getParameter(String name)
{
- return (String) tag.getParameter(name.toLowerCase());
+ return tag.getParameter(name.toLowerCase());
}
/**
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import java.util.ResourceBundle;
class Main
import java.util.ArrayList;
import java.util.HashMap;
-import javax.swing.JOptionPane;
-
class PluginAppletWindow
extends EmbeddedWindow
* Called when the hierarchy of this component changes. Use
* <code>getChangeFlags()</code> on the event to see what exactly changed.
*
- * @param e the event describing the change
+ * @param event the event describing the change
*/
public void hierarchyChanged(HierarchyEvent event)
{
* Called when the hierarchy of this component changes. Use
* <code>getChangeFlags()</code> on the event to see what exactly changed.
*
- * @param e the event describing the change
+ * @param event the event describing the change
*/
public void hierarchyChanged(HierarchyEvent event)
{
/**
* Parses the archive string and returns a list.
*
- * @param the list of archives (comma-separated) in a String.
+ * @param arcs the list of archives (comma-separated) in a String.
*/
static ArrayList parseArchives(String arcs, AppletTag t)
{
package gnu.classpath.tools.common;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.Reader;
import java.text.MessageFormat;
+import java.util.ArrayList;
import gnu.classpath.Configuration;
+import gnu.classpath.tools.getopt.FileArgumentCallback;
import gnu.classpath.tools.getopt.Option;
import gnu.classpath.tools.getopt.OptionException;
import gnu.classpath.tools.getopt.Parser;
}
});
}
+
+ public void parse(String[] inArgs, FileArgumentCallback files,
+ boolean handleFileLists)
+ {
+ FileArgumentCallback cb;
+
+ if (handleFileLists)
+ cb = new AtFileArgumentCallback(files);
+ else
+ cb = files;
+
+ parse(inArgs, cb);
+ }
+
+ public String[] parse(String[] inArgs, boolean handleFileLists)
+ {
+ final ArrayList<String> fileResult = new ArrayList<String>();
+
+ final FileArgumentCallback cb = new FileArgumentCallback()
+ {
+ public void notifyFile(String fileArgument)
+ {
+ fileResult.add(fileArgument);
+ }
+ };
+
+ if (handleFileLists)
+ parse(inArgs, new AtFileArgumentCallback(cb));
+ else
+ parse(inArgs, cb);
+
+ return fileResult.toArray(new String[fileResult.size()]);
+ }
+
+
+ /**
+ * Simple function that takes the given {@link Reader}, treats it like
+ * a textfile and reads all the whitespace separated entries from it
+ * and adds them to the @{link FileArgumentCallback} instance.
+ *
+ * @param reader the reader to read from.
+ * @param cb the callback to post the filenames to.
+ * @throws OptionException if an error occurs reading the list.
+ */
+ public void parseFileList(Reader reader, FileArgumentCallback cb)
+ throws OptionException
+ {
+ BufferedReader breader = new BufferedReader(reader);
+ String line = null;
+
+ try
+ {
+ while ((line = breader.readLine()) != null)
+ parseLine(line, cb);
+
+ reader.close();
+ }
+ catch (IOException ioe)
+ {
+ throw new OptionException("I/O error while reading a file list", ioe);
+ }
+
+ }
+
+ /**
+ * Parses whitespace separated file entries.
+ *
+ * Note: This is not coping with whitespace in files or quoting.
+ *
+ * @param line the line of the file to parse.
+ * @param cb the callback to pass the parsed file to.
+ * @throws IOException if an I/O error occurs.
+ * @throws OptionException if an error occurs in the callback.
+ */
+ private void parseLine(String line, FileArgumentCallback cb)
+ throws IOException, OptionException
+ {
+ final int length = line.length();
+ int start = 0;
+ int end = 0;
+
+ // While not reached end of line ...
+ while (start < length)
+ {
+ // Search for first non-whitespace character for the start of a word.
+ while (Character.isWhitespace(line.codePointAt(start)))
+ {
+ start++;
+
+ if (start == length)
+ return;
+ }
+
+ end = start + 1;
+
+ // Search for first whitespace character for the end of a word.
+ while (end < length && !Character.isWhitespace(line.codePointAt(end)))
+ end++;
+
+ cb.notifyFile(line.substring(start, end));
+
+ start = end + 1;
+ }
+ }
+
+ /**
+ * Implementation of {@link FileArgumentCallback} that handles
+ * file arguments in {@link #notifyFile} starting with a <code>@</code>
+ * through {@link ClasspathToolParser#parseFileList}.
+ */
+ class AtFileArgumentCallback extends FileArgumentCallback
+ {
+ FileArgumentCallback cb;
+
+ AtFileArgumentCallback(FileArgumentCallback cb)
+ {
+ this.cb = cb;
+ }
+
+ @Override
+ public void notifyFile(String fileArgument)
+ throws OptionException
+ {
+ if (fileArgument.codePointAt(0) == '@')
+ {
+ FileReader fr = null;
+
+ try
+ {
+ fr = new FileReader(fileArgument.substring(1));
+ }
+ catch (FileNotFoundException fnfe)
+ {
+ throw new OptionException("File not found: " + fileArgument.substring(1),
+ fnfe);
+ }
+
+ ClasspathToolParser.this.parseFileList(fr, cb);
+ }
+ else
+ cb.notifyFile(fileArgument);
+ }
+
+ }
+
}
{
super(message);
}
+
+ public OptionException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
}
}
}
- private Parser initializeParser()
+ private ClasspathToolParser initializeParser()
{
- Parser p = new JarParser("jar"); //$NON-NLS-1$
+ ClasspathToolParser p = new JarParser("jar"); //$NON-NLS-1$
p.setHeader(Messages.getString("Main.Usage")); //$NON-NLS-1$
OptionGroup grp = new OptionGroup(Messages.getString("Main.OpMode")); //$NON-NLS-1$
private void run(String[] args)
throws InstantiationException, IllegalAccessException, IOException
{
- Parser p = initializeParser();
+ ClasspathToolParser p = initializeParser();
// Special hack to emulate old tar-style commands.
if (args.length > 0 && args[0].charAt(0) != '-')
args[0] = '-' + args[0];
- p.parse(args, new HandleFile());
+ p.parse(args, new HandleFile(), true);
if (readNamesFromStdin)
readNames();
Action t = (Action) operationMode.newInstance();
return new PrintStream(fos);
}
- public void printClass(File filename, ClassWrapper klass) throws IOException
+ public void printClass(File file, ClassWrapper klass) throws IOException
{
// Never write Object or Class. This is a hack, maybe
// the user would like to see what they look like...
if (klass.name.equals("java/lang/Object")
|| klass.name.equals("java/lang/Class"))
return;
- PrintStream ps = getPrintStream(filename + ".h", klass);
+ PrintStream ps = getPrintStream(file + ".h", klass);
if (ps == null)
return;
ps.println();
package gnu.classpath.tools.javah;
+import gnu.classpath.tools.common.ClasspathToolParser;
+
import gnu.classpath.tools.getopt.Option;
import gnu.classpath.tools.getopt.OptionException;
import gnu.classpath.tools.getopt.OptionGroup;
-import gnu.classpath.tools.getopt.Parser;
import java.io.IOException;
import java.util.ArrayList;
return "gcjh";
}
- protected Parser getParser()
+ protected ClasspathToolParser getParser()
{
- Parser result = super.getParser();
+ ClasspathToolParser result = super.getParser();
result.setHeader("usage: gcjh [OPTION]... CLASS...");
return new JniPrintStream(classpath, fos, klass);
}
- public void printClass(File filename, ClassWrapper klass) throws IOException
+ public void printClass(File file, ClassWrapper klass) throws IOException
{
// Note that we ignore the filename here.
String xname = JniHelper.mangle(klass.name);
- JniPrintStream out
- = (JniPrintStream) getPrintStream(klass.name.replace('/', '_') + ".h",
- klass);
+
+ // mangle the filename a bit
+ String filename = klass.name;
+
+ filename = filename.replace('/', '_');
+ filename = filename.replace('$', '_');
+ filename = filename + ".h";
+
+ JniPrintStream out = (JniPrintStream) getPrintStream(filename, klass);
+
if (out == null)
return;
+
out.println();
out.print("#ifndef __");
out.print(xname);
return "javah";
}
- protected Parser getParser()
+ protected ClasspathToolParser getParser()
{
ClasspathToolParser result = new ClasspathToolParser(getName(), true);
result.setHeader("usage: javah [OPTIONS] CLASS...");
while (i.hasNext())
{
Map.Entry e = (Map.Entry) i.next();
- File filename = (File) e.getKey();
+ File file = (File) e.getKey();
ClassWrapper klass = (ClassWrapper) e.getValue();
if (verbose)
- System.err.println("[writing " + klass + " as " + filename + "]");
- printer.printClass(filename, klass);
+ System.err.println("[writing " + klass + " as " + file + "]");
+ printer.printClass(file, klass);
}
}
protected void run(String[] args) throws IOException
{
- Parser p = getParser();
- String[] classNames = p.parse(args);
+ ClasspathToolParser p = getParser();
+ String[] classNames = p.parse(args, true);
postParse(classNames);
loader = classpath.getLoader();
encoding = argument;
}
});
- result.add(new Option("reverse", Messages.getString("Native2ASCII.ReversedHelp")) //$NON-NLS-1$ //$NON-NLS-2$
+ result.add(new Option("reverse", Messages.getString("Native2ASCII.ReverseHelp")) //$NON-NLS-1$ //$NON-NLS-2$
{
public void parsed(String argument) throws OptionException
{
import gnu.CORBA.IOR;
import gnu.CORBA.NamingService.Ext;
import gnu.classpath.tools.common.ClasspathToolParser;
-import gnu.classpath.tools.getopt.FileArgumentCallback;
import gnu.classpath.tools.getopt.Option;
import gnu.classpath.tools.getopt.OptionException;
-import gnu.classpath.tools.getopt.OptionGroup;
import gnu.classpath.tools.getopt.Parser;
import org.omg.CosNaming.NamingContextExt;
package gnu.classpath.tools.rmic;
import gnu.java.rmi.server.RMIHashes;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.rmi.server.RemoteStub;
import java.rmi.server.Skeleton;
import java.rmi.server.SkeletonMismatchException;
-import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
import java.util.StringTokenizer;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
package gnu.classpath.tools.rmic;
import gnu.classpath.tools.common.ClasspathToolParser;
-import gnu.classpath.tools.getopt.FileArgumentCallback;
import gnu.classpath.tools.getopt.Option;
import gnu.classpath.tools.getopt.OptionException;
-import gnu.classpath.tools.getopt.OptionGroup;
import gnu.classpath.tools.getopt.Parser;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
import java.util.ArrayList;
/**
+++ /dev/null
-package #package;
-
-#imports
-import java.rmi.Remote;
-import javax.rmi.PortableRemoteObject;
-import javax.rmi.CORBA.Tie;
-
-import org.omg.CORBA.BAD_OPERATION;
-import org.omg.CORBA.ORB;
-import org.omg.CORBA.SystemException;
-import org.omg.CORBA.portable.OutputStream;
-import org.omg.CORBA.portable.ResponseHandler;
-import org.omg.CORBA.portable.UnknownException;
-import org.omg.PortableServer.Servant;
-
-import org.omg.CORBA_2_3.portable.ObjectImpl;
-import org.omg.CORBA_2_3.portable.InputStream;
-
-// This Tie type is obsolete. Use the POA - based tie (key -poa).
-
-/**
- * This class accepts remote calls to the served GIOP object and delegates them
- * to the enclosed implementing class. Being derived from the ObjectImpl,
- * it directly implements the GIOP Object.
- *
- * It is normally generated with grmic -impl
- */
-public class _#nameImpl_Tie extends ObjectImpl implements Tie
-{
- /**
- * All decoded remote calls are forwarded to this target.
- */
- #implName target;
-
- /**
- * The array of repository ids, supported by this GIOP Object
- */
- private static final String[] type_ids =
- {
-#idList
- };
-
- /**
- * Get an array of all interfaces (repository ids),
- * supported by this Object.
- *
- * @return the array of Ids.
- */
- public String[] _ids()
- {
- return type_ids;
- }
-
- /**
- * Set the invocation target, where all received calls are finally
- * forwarded.
- *
- * @param a_target the forwarding target
- *
- * @throws ClassCastException if the target is not an instance of
- * #implName
- */
- public void setTarget(Remote a_target)
- {
- this.target = (#implName) a_target;
- }
-
- /**
- * Get the invocation target, where all received calls are finally
- * forwarded.
- *
- * @return the target, an instance of
- * #implName
- */
- public Remote getTarget()
- {
- return target;
- }
-
- /**
- * Return the actual GIOP object that would handle this request.
- *
- * @return <code>this</code>, always.
- */
- public org.omg.CORBA.Object thisObject()
- {
- return this;
- }
-
- /**
- * Deactivates this object, disconnecting it from the orb.
- */
- public void deactivate()
- {
- _orb().disconnect(this);
- _set_delegate(null);
- target = null;
- }
-
- /**
- * Get the {@link ORB} where this {@link Servant} is connected.
- *
- * @return the ORB
- */
- public ORB orb()
- {
- return _orb();
- }
-
- /**
- * Connect this servant to the given ORB.
- */
- public void orb(ORB orb)
- {
- orb.connect(this);
- }
-
-/**
- * This method is invoked by ORB in response to the remote call. It redirects
- * the call to one of the methods in the target.
- *
- * @param method the name of the method to call.
- * @param parameter_stream the input stream, from where the parameters must be
- * read.
- * @param reply the response hander, providing methods to return the result.
- *
- * @return the output stream, created by the response handler
- *
- * @throws SystemException if one occurs during method invocation.
- */
- public OutputStream _invoke(String method,
- org.omg.CORBA.portable.InputStream parameter_stream,
- ResponseHandler reply)
- {
- try
- {
- InputStream in =(InputStream) parameter_stream;
-
-#tie_methods
-
- throw new BAD_OPERATION("No such method: '"+method+"'");
- }
- catch (SystemException ex)
- {
- throw ex;
- }
- catch (Throwable ex)
- {
- throw new UnknownException(ex);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-package #package;
-
-#imports
-import java.rmi.UnexpectedException;
-
-import javax.rmi.CORBA.Stub;
-import javax.rmi.CORBA.Util;
-
-import org.omg.CORBA.SystemException;
-import org.omg.CORBA.portable.ApplicationException;
-import org.omg.CORBA.portable.InputStream;
-import org.omg.CORBA.portable.RemarshalException;
-
-import org.omg.CORBA_2_3.portable.OutputStream;
-
-/**
- * This class delegates its method calls to the remote GIOP object.
- * It is normally generated with grmic.
- */
-public class _#name_Stub extends Stub
- implements #interfaces
-{
- /**
- * Use serialVersionUID for interoperability.
- */
- private static final long serialVersionUID = 1;
-
- /**
- * The array of repository ids, supported by this GIOP Object
- */
- private static final String[] type_ids =
- {
-#idList
- };
-
- /**
- * Return the array of repository ids, supported by this GIOP Object.
- *
- * @return the array of Ids.
- */
- public String[] _ids()
- {
- return type_ids;
- }
-
-#stub_methods
-}
\ No newline at end of file
+++ /dev/null
- /** @inheritDoc */
- public #return_type #method_name(#argument_list) #throws
- {
- try
- {
- InputStream in = null;
- try
- {
- OutputStream out =
- (OutputStream) _request("#giop_method_name", true);
-#argument_write
- in = _invoke(out);
- #read_return
- }
- catch (ApplicationException ex)
- {
- in = ex.getInputStream();
- throw new UnexpectedException(in.read_string());
- }
- catch (RemarshalException ex)
- {
- return #method_name(#argument_names);
- }
- finally
- {
- _releaseReply(in);
- }
- }
- catch (SystemException ex)
- {
- throw Util.mapSystemException(ex);
- }
- }
+++ /dev/null
- /** @inheritDoc */
- public #return_type #method_name(#argument_list) #throws
- {
- try
- {
- InputStream in = null;
- try
- {
- OutputStream out =
- (OutputStream) _request("#giop_method_name", true);
-#argument_write
- in = _invoke(out);
- }
- catch (ApplicationException ex)
- {
- in = ex.getInputStream();
- throw new UnexpectedException(in.read_string());
- }
- catch (RemarshalException ex)
- {
- #method_name(#argument_names);
- }
- finally
- {
- _releaseReply(in);
- }
- }
- catch (SystemException ex)
- {
- throw Util.mapSystemException(ex);
- }
- }
+++ /dev/null
-package #package;
-
-#imports
-import java.lang.reflect.Method;
-import java.rmi.server.RemoteRef;
-import java.rmi.server.RemoteStub;
-import java.rmi.UnexpectedException;
-
-/**
- * This class delegates its method calls to the remote RMI object, referenced
- * by {@link RemoteRef}.
- *
- * It is normally generated with rmic.
- */
-public final class #name_Stub
- extends RemoteStub
- implements #interfaces
-{
- /**
- * Use serialVersionUID for interoperability
- */
- private static final long serialVersionUID = 2;
-
- /**
- * The explaining message for {@ling UnexpectedException}.
- */
- private static final String exception_message =
- "undeclared checked exception";
-
- /* All remote methods, invoked by this stub: */
-#stub_method_declarations
- #zeroSizeObjecArray
- static
- {
- #zeroSizeClassArray
- try
- {
-#stub_method_initializations
- }
- catch (NoSuchMethodException nex)
- {
- NoSuchMethodError err = new NoSuchMethodError(
- "#name_Stub class initialization failed");
- err.initCause(nex);
- throw err;
- }
- }
-
- /**
- * Create the instance for _#name_Stub that forwards method calls to the
- * remote object.
- *
- * @para the reference to the remote object.
- */
- public #name_Stub(RemoteRef reference)
- {
- super(reference);
- }
-
- /* Methods */
-#stub_methods
-}
+++ /dev/null
- /** @inheritDoc */
- public #return_type #method_name(#argument_list) #throws
- {
- try
- {
- Object result = ref.invoke(this, met_#method_name,
- #object_arg_list,
- #method_hash);
- #return_statement
- }
- catch (RuntimeException e)
- {
- throw e;
- }
- catch (RemoteException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- UnexpectedException uex = new UnexpectedException(exception_message);
- uex.detail = e;
- throw uex;
- }
- }
-
\ No newline at end of file
+++ /dev/null
- /** @inheritDoc */
- public void #method_name(#argument_list) #throws
- {
- try
- {
- ref.invoke(this, met_#method_name,
- #object_arg_list,
- #method_hash);
- }
- catch (RuntimeException e)
- {
- throw e;
- }
- catch (RemoteException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- UnexpectedException uex = new UnexpectedException(exception_message);
- uex.detail = e;
- throw uex;
- }
- }
-
\ No newline at end of file
+++ /dev/null
-package #package;
-
-#imports
-import java.rmi.Remote;
-import javax.rmi.PortableRemoteObject;
-import javax.rmi.CORBA.Tie;
-
-import org.omg.CORBA.BAD_OPERATION;
-import org.omg.CORBA.ORB;
-import org.omg.CORBA.SystemException;
-import org.omg.CORBA.portable.OutputStream;
-import org.omg.CORBA.portable.ResponseHandler;
-import org.omg.CORBA.portable.UnknownException;
-import org.omg.PortableServer.Servant;
-import org.omg.PortableServer.POA;
-import org.omg.PortableServer.POAPackage.WrongPolicy;
-import org.omg.PortableServer.POAPackage.ObjectNotActive;
-import org.omg.PortableServer.POAPackage.ServantNotActive;
-
-import org.omg.CORBA_2_3.portable.InputStream;
-
-/**
- * This class accepts remote calls to the served GIOP object and delegates them
- * to the enclosed implementing class. Being servant, it must be connected to
- * the ORB Poa.
- * It is normally generated with grmic -poa
- */
-public class _#nameImpl_Tie extends Servant implements Tie
-{
- /**
- * All decoded remote calls are forwarded to this target.
- */
- #implName target;
-
- /**
- * The array of repository ids, supported by this GIOP Object
- */
- private static final String[] type_ids =
- {
-#idList
- };
-
- /**
- * Get an array of all interfaces, supported by this
- * {@link Servant}.
- *
- * @param poa unused
- * @param objectId unused
- *
- * @return the array of Ids.
- */
- public String[] _all_interfaces(POA poa,
- byte[] objectId
- )
- {
- return type_ids;
- }
-
-
- /**
- * Set the invocation target, where all received calls are finally
- * forwarded.
- *
- * @param a_target the forwarding target
- *
- * @throws ClassCastException if the target is not an instance of
- * #implName
- */
- public void setTarget(Remote a_target)
- {
- this.target = (#implName) a_target;
- }
-
- /**
- * Get the invocation target, where all received calls are finally
- * forwarded.
- *
- * @return the target, an instance of
- * #implName
- */
- public Remote getTarget()
- {
- return target;
- }
-
- /**
- * Return the actual GIOP object that would handle this request.
- *
- * @return the GIOP object.
- */
- public org.omg.CORBA.Object thisObject()
- {
- return _this_object();
- }
-
- /**
- * Deactivate this {@link Servant}. The WrongPolicy, ObjectNotActive
- * and ServantNotActive exceptions, if thrown during deactivation, are
- * catched and silently ignored.
- */
- public void deactivate()
- {
- try
- {
- _poa().deactivate_object(_poa().servant_to_id(this));
- }
- catch (WrongPolicy exception)
- {
- }
- catch (ObjectNotActive exception)
- {
- }
- catch (ServantNotActive exception)
- {
- }
- }
-
- /**
- * Get the {@link ORB} where this {@link Servant} is connected.
- *
- * @return the ORB
- */
- public ORB orb()
- {
- return _orb();
- }
-
- /**
- * Connect this servant to the given ORB. It is recommended to connect
- * servant to the ORBs root or other POA rather than using this method.
- */
- public void orb(ORB orb)
- {
- try
- {
- ((org.omg.CORBA_2_3.ORB) orb).set_delegate(this);
- }
- catch (ClassCastException e)
- {
- throw new org.omg.CORBA.BAD_PARAM(
- "POA Servant requires an instance of org.omg.CORBA_2_3.ORB"
- );
- }
- }
-
-/**
- * This method is invoked by ORB in response to the remote call. It redirects
- * the call to one of the methods in the target.
- *
- * @param method the name of the method to call.
- * @param parameter_stream the input stream, from where the parameters must be
- * read.
- * @param reply the response hander, providing methods to return the result.
- *
- * @return the output stream, created by the response handler
- *
- * @throws SystemException if one occurs during method invocation.
- */
- public OutputStream _invoke(String method,
- org.omg.CORBA.portable.InputStream parameter_stream,
- ResponseHandler reply
- ) throws SystemException
- {
- try
- {
- InputStream in =(InputStream) parameter_stream;
- switch (method.charAt(#hashCharPos))
- {
-#tie_methods
- default: break;
- }
-
- throw new BAD_OPERATION("No such method: '"+method+"'");
- }
- catch (SystemException ex)
- {
- throw ex;
- }
- catch (Throwable ex)
- {
- throw new UnknownException(ex);
- }
- }
-}
\ No newline at end of file
+++ /dev/null
- #hashCodeLabel
- // #method_name
- if (method.equals("#giop_method_name"))
- {
-#read_and_define_args
- OutputStream out = reply.createReply();
- #return_type result =
- target.#method_name(#argument_names);
- #write_result
- return out;
- }
+++ /dev/null
- #hashCodeLabel
- // #method_name
- if (method.equals("#giop_method_name"))
- {
-#read_and_define_args
- OutputStream out = reply.createReply();
- target.#method_name(#argument_names);
- return out;
- }
import gnu.classpath.tools.rmid.ActivationSystemImpl;
import gnu.classpath.tools.common.ClasspathToolParser;
-import gnu.classpath.tools.getopt.FileArgumentCallback;
import gnu.classpath.tools.getopt.Option;
import gnu.classpath.tools.getopt.OptionException;
import gnu.classpath.tools.getopt.OptionGroup;
import gnu.CORBA.NamingService.NamingServiceTransient;
import gnu.classpath.tools.common.ClasspathToolParser;
-import gnu.classpath.tools.getopt.FileArgumentCallback;
import gnu.classpath.tools.getopt.Option;
import gnu.classpath.tools.getopt.OptionException;
-import gnu.classpath.tools.getopt.OptionGroup;
import gnu.classpath.tools.getopt.Parser;
/**
--- /dev/null
+# messages.properties -- English language messages
+# Copyright (C) 2007 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.
+
+Main.FailedToRead:failed to read ecj.jar (reconfigure with --with-ecj-jar): {0}
+Main.MalformedURL:malformed URL for ecj.jar: {0}
+Main.FailedToLoad:failed to load {0} from ecj.jar: {1}
+Main.FailedConstructor:failed to find ecj constructor
+Main.FailedCompile:failed to find ecj compile method
--- /dev/null
+# messages.properties -- English language messages
+# Copyright (C) 2004, 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.
+
+Main.ErrorApplet=An error occurred while loading this applet.
+Main.Usage=Usage: appletviewer [OPTION] -code CODE | URL...
+Main.AppletTagOptions=Applet tag options
+Main.CodeDescription=specify the code attribute
+Main.CodeArgument=CODE
+Main.CodebaseDescription=specify the codebase attribute
+Main.CodebaseArgument=CODEBASE
+Main.ArchiveDescription=specify the archive attribute
+Main.ArchiveArgument=ARCHIVE
+Main.WidthDescription=specify the width attribute
+Main.WidthArgument=WIDTH
+Main.HeightDescription=specify the height attribute
+Main.HeightArgument=HEIGHT
+Main.ParamDescription=specify the parameter arguments
+Main.ParamArgument=NAME,VALUE
+Main.PluginOption=Plugin option
+Main.PluginDescription=enable plugin mode
+Main.PluginArgument=INPUT,OUTPUT
+Main.DebuggingOption=Debugging option
+Main.VerboseDescription=enable verbose mode
+Main.CompatibilityOptions=Compatibility options
+Main.DebugDescription=enable debugging mode (not implemented)
+Main.EncodingDescription=specify the HTML character encoding
+Main.EncodingArgument=CHARSET
+Main.SecurityWarning=WARNING: CURRENTLY GAPPLETVIEWER RUNS WITH NO\
+ SECURITY MANAGER.\n\
+THIS MEANS THAT APPLETS YOU LOAD CAN DO ANYTHING A JAVA APPLICATION\n\
+THAT YOU DOWNLOAD AND RUN CAN DO. BE *VERY* CAREFUL WHICH APPLETS YOU RUN.\n\
+DO NOT USE GAPPLETVIEWER ON YOUR SYSTEM IF YOUR SYSTEM STORES IMPORTANT\
+ DATA.\n\
+THIS DATA CAN BE DESTROYED OR STOLEN IF YOU LOAD A MALICIOUS APPLET.
+Main.ContinuationPrompt=[press 'c' or 'C' to continue or anything else to quit]
+Main.NoInputFiles=appletviewer: no input files
+Main.RawArguments=Raw arguments:
+
+PluginAppletViewer.AppletViewerWrote=PIPE: applet viewer wrote:
+PluginAppletViewer.AppletViewerRead=PIPE: applet viewer read:
+PluginAppletViewer.AppletViewerExiting=appletviewer: exiting plugin applet\
+ viewer
+
+StandaloneAppletContext.ShowDocumentError=showDocument is not implemented in\
+ standalone mode
+
+StandaloneAppletViewer.ParsedAppletTags=Parsed applet tags:
+StandaloneAppletViewer.Tag=tag
+StandaloneAppletViewer.CodeOptionError=appletviewer: option '--code' requires\
+ a class filename
+
+StandaloneAppletWindow.MenuTitle=Applet
+StandaloneAppletWindow.MenuReload=Reload
+StandaloneAppletWindow.MenuRestart=Restart
+StandaloneAppletWindow.MenuStart=Start
+StandaloneAppletWindow.MenuStop=Stop
+StandaloneAppletWindow.MenuClone=Clone ...
+StandaloneAppletWindow.MenuQuit=Quit
+StandaloneAppletWindow.MenuClose=Close
+StandaloneAppletWindow.MenuTag=Tag ...
+StandaloneAppletWindow.MenuInfo=Info ...
+StandaloneAppletWindow.MenuEdit=Edit
+StandaloneAppletWindow.MenuEncoding=Character Encoding
+StandaloneAppletWindow.MenuPrint=Print ...
+StandaloneAppletWindow.MenuProperties=Properties ...
+StandaloneAppletWindow.MenuCancel=Cancel
+StandaloneAppletWindow.MenuSave=Save ...
+StandaloneAppletWindow.WindowTitle=GNU Classpath Applet Viewer:
--- /dev/null
+# 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.
+
+ClasspathToolParser.JArgument=pass argument to the Java runtime
+ClasspathToolParser.JName=OPTION
+ClasspathToolParser.VersionFormat={0} (GNU Classpath) {1}\n\nCopyright 2006 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.
--- /dev/null
+# 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
--- /dev/null
+# messages.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.
+
+Creator.Ignoring=ignoring entry {0}
+Creator.Adding=adding: {0} (in={1,number,integer}) (out={2,number,integer}) (stored {3,number,integer}%)
+Extractor.Created=\ \ created: {0}
+Extractor.Extracted=\ extracted: {0}
+Extractor.Inflated=\ \ inflated: {0}
+Indexer.Indexing=indexing: {0}
+Main.ArchiveAlreadySet=archive file name already set to {0}
+Main.ModeAlreaySet=operation mode already specified
+Main.MustSpecify=must specify one of -t, -c, -u, -x, or -i
+Main.TwoArgsReqd=-C argument requires both directory and filename
+Main.CantHaveBoth=can't specify both -m and -M
+Main.NoFilesWithi=can't specify file arguments when using -i
+Main.NoMAndi=can't specify -M with -i
+Main.AnotherNomAndi=can't specify -m with -i
+Main.Usage=Usage: jar -ctxui [OPTIONS] jar-file [-C DIR FILE] FILE...
+Main.OpMode=Operation mode
+Main.Create=create a new archive
+Main.Extract=extract from archive
+Main.List=list archive contents
+Main.Update=update archive
+Main.Index=compute archive index
+Main.FileArg=FILE
+Main.OpMods=Operation modifiers
+Main.ArchiveName=specify archive file name
+Main.FileArg2=FILE
+Main.NoZip=store only; no ZIP compression
+Main.Verbose=verbose operation
+Main.NoManifest=do not create a manifest file
+Main.ManifestName=specify manifest file
+Main.ManifestArgName=FILE
+Main.FileNameGroup=File name selection
+Main.ChangeDir=change to directory before the next file
+Main.ChangeDirArg=DIR FILE
+Main.InternalError=jar: internal error:
+Main.Stdin=Read file names from stdin
--- /dev/null
+# messages.properties -- English language messages and message formats
+# 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.
+#
+# for gnu.classpath.tools.jarsigner package
+#
+
+Main.7=jarsigner:
+Main.9=jarsigner error:
+Main.70=JAR file [{0}] is NOT a file object
+Main.72=JAR file [{0}] is NOT readable
+#Main.85=Option '-keystore' is not defined or is an empty string, and 'user.home' is unknown
+Main.85=Unable to locate a valid key store
+Main.92=Enter key store password:
+Main.6=Designated alias [{0}] MUST be known to the key store in use
+Main.2=\
+Usage: jarsigner [OPTION]... FILE ALIAS\n\
+\ \ \ \ \ \ \ \ jarsigner -verify [OPTION]... FILE\n\
+Java ARchive (JAR) file signing and verification tool.\n\
+\n\
+FILE is the .JAR file to sign or to verify.\n\
+\n\
+ALIAS must be a known Alias of a Key Entry in the designated key store. The \
+private key material associated with this Alias is used for signing FILE. if \
+ALIAS is required, but was omitted, "mykey" will be used instead.
+Main.1=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+Main.0=Signing options
+Main.95=Designated alias [{0}] MUST be an Alias of a Key Entry
+Main.97=Enter key password for <{0}>:
+Main.99=Key associated with [{0}] MUST be a private key
+Main.101=Location of the key store to use. The default value is a file-based \
+scheme whose path is the file named ".keystore" in your home directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+Main.102=URL
+Main.104=Type of the key store to use. If omitted, the default value is that \
+of the property "keystore.type" in the security properties file.
+Main.105=STORE_TYPE
+Main.107=Password to unlock the key store. If omitted, you will be prompted \
+to provide a password.
+Main.108=PASSWORD
+Main.110=Password to unlock the Key Entry associated with ALIAS. If omitted, \
+the tool will use the same password protecting the key store. If this fails, \
+you will be prompted to provide a password.
+Main.111=PASSWORD
+Main.113=A literal to construct file names for both the .SF and .DSA signature \
+files --which will be placed in the META-INF directory of the signed JAR. \
+Permissible characters are in the range [a-zA-Z0-9_-].\n\
+If omitted, the first 8 characters of ALIAS will be used. Characters outside \
+that range will be replaced by underscores.
+Main.114=NAME
+Main.116=Name of the signed JAR file. If omitted, the signed JAR will be \
+named the same as FILE; i.e. the input file will be replaced with its signed \
+copy.
+Main.117=FILE
+Main.118=Verification options
+Main.120=Verify an already signed FILE.
+Main.122=Use with -verbose to see more detailed information about the \
+certificates of ALIAS.
+Main.123=Common options
+Main.125=Output more verbose messages during processing.
+Main.127=Include --otherwise do not-- the .SF file in the .DSA generated file.
+Main.129=Include in the .SF generated file --otherwise do not-- a header \
+containing a hash of the whole manifest file.
+Main.131=Fully qualified class name of a Security Provider to add to the JVM \
+in-use.
+Main.132=PROVIDER_CLASS_NAME
+Main.133=Missing FILE argument.
+
+JarSigner.1=\ \ signing:
+JarSigner.2=\ updating:
+JarSigner.8=\ \ \ adding:
+JarSigner.14=Jar signed.
+
+JarVerifier.2=Jar is not signed --no signature files found.
+JarVerifier.3=Jar verification failed.
+JarVerifier.4=Jar partially verified --{0,numer} of {1,number} signers.
+JarVerifier.7=Jar verified --{0,number} signer(s).
+JarVerifier.13=Signature Block missing for {0}
+JarVerifier.14=At least one SignerInfo element MUST be present in a Signature \
+Block (.DSA file)
+JarVerifier.16=Missing EncryptedDigest in Signature Block (.DSA file) first \
+SignerInfo element
+
+SFHelper.1=Helper is NOT finished
+SFHelper.4=.SF file has NOT been generated
+SFHelper.6=Unknown or unsupported private key algorithm
+SFHelper.9=Helper is NOT ready
+SFHelper.0=Warning: The certificate issued by {0}, for {1}, has expired as of {3,date,full} - {3,time,full}.
+SFHelper.10=Helper is NOT started
+SFHelper.11=Warning: The certificate issued by {0}, for {1}, is only valid after {3,date,full} - {3,time,full}.
+SFHelper.14=[unknown]
+SFHelper.17=[unnamed]
--- /dev/null
+# messages.properties -- English language messages and message formats
+# 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.
+#
+# for gnu.classpath.tools.keytool package
+#
+
+Main.6=keytool: {0}
+Main.8=keytool error: {0}
+Main.5=Import a CA's Trusted Certificate.\n\
+[-file FILE] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+Main.18=Unrecognized command: {0}
+Main.19=Usage: keytool [COMMAND] [-- COMMAND]...\n\
+Manage private keys and public certificates.
+Main.20=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+Main.21=Available commands
+Main.22=Generate a Key Entry, eventually creating a key store.\n\
+[-alias ALIAS] [-keyalg ALGORITHM] [-keysize KEY_SIZE]\n\
+[-sigalg ALGORITHM] [-dname NAME] [-keypass PASSWORD]\n\
+[-validity DAY_COUNT] [-storetype STORE_TYPE]\n\
+[-keystore URL] [-storepass PASSWORD]\n\
+[-provider PROVIDER_CLASS_NAME] [-v].
+Main.23=Add Key Entries and Trusted Certificates.\n\
+[-alias ALIAS] [-file FILE] [-keypass PASSWORD]\n\
+[-noprompt] [-trustcacerts] [-storetype STORE_TYPE]\n\
+[-keystore URL] [-storepass PASSWORD]\n\
+[-provider PROVIDER_CLASS_NAME] [-v].
+Main.24=Generate a self-signed Trusted Certificate.\n\
+[-alias ALIAS] [-sigalg ALGORITHM] [-dname NAME]\n\
+[-validity DAY_COUNT] [-keypass PASSWORD]\n\
+[-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+Main.25=NOT IMPLEMENTED YET. Import JDK1.1 Identity Database.\n\
+[-file FILE] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+Main.26=Issue a Certificate Signing Request (CSR).\n\
+[-alias ALIAS] [-sigalg ALGORITHM] [-file FILE]\n\
+[-keypass PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v]\n\
+[-attributes].
+Main.27=Export a Certificate from a key store.\n\
+[-alias ALIAS] [-file FILE] [-storetype STORE_TYPE]\n\
+[-keystore URL] [-storepass PASSWORD]\n\
+[-provider PROVIDER_CLASS_NAME] [-rfc] [-v].
+Main.28=Print one or all Certificates in a key store to STDOUT.\n\
+[-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-rfc] [-v].
+Main.29=Print a human-readable form of a Certificate in a FILE.\n\
+[-file FILE] [-v].
+Main.30=Clone a Key Entry in a key store.\n\
+[-alias ALIAS] [-dest ALIAS] [-keypass PASSWORD]\n\
+[-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+Main.31=Change the password protecting a key store.\n\
+[-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+Main.32=Change the password protecting a Key Entry in a key store.\n\
+[-alias ALIAS] [-keypass PASSWORD] [-new PASSWORD]\n\
+[-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+Main.33=Delete a Key Entry or a Trusted Certificate from a key store.\n\
+[-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]\n\
+[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
+
+Command.19=Failed creating new file at {0}
+Command.20=Unable to find a suitable signature algorithm named {0}, although we found a key-pair generation algorithm named {1}
+Command.21=Enter key password for <{0}>:
+Command.23=A correct key password MUST be provided
+Command.24=Enter key store password:
+#Command.36=Option '-keystore' is undefined, or is an empty string, and 'user.home' is unknown
+Command.36=Unable to locate a valid key store
+Command.40=Provider fully qualified class name:
+Command.42=File object [{0}] exists but is NOT a file
+Command.44=File [{0}] exists but is NOT writable
+Command.46=File object [{0}] MUST be an existing readable file
+Command.48=Signature algorithm is missing and private key is of unknown or unsupported type
+Command.51=Validity period MUST be greater than zero
+Command.52=Unable to get signature algorithm name
+Command.60=Unknown or unsupported signature algorithm: {0}
+Command.63=Saving key store at {0}
+Command.66=Owner: {0}
+Command.67=Issuer: {0}
+Command.68=Serial number: {0,number}
+Command.69=Valid from: {0,date,full} - {0,time,full}
+Command.70=\ \ \ \ \ until: {0,date,full} - {0,time,full}
+Command.71=Certificate fingerprints
+Command.72=\ \ \ \ \ \ MD5: {0}
+Command.73=\ \ SHA-160: {0}
+Command.75=Alias [{0}] MUST be knwon to the key store
+Command.77=Alias [{0}] MUST be associated with a Key Entry
+
+CertReqCmd.27=Certification request stored in {0}
+CertReqCmd.28=Submit this to your CA
+CertReqCmd.25=Usage: keytool -certreq [OPTION]...\n\
+Generate a PKCS#10 Certificate Signing Request (CSR) and write it to a \
+designated output destination.\n\n\
+IMPORTANT: Some documentation claims that the Attributes field, in the CSR is \
+OPTIONAL while RFC-2986 implies the opposite. This implementation considers \
+this field, by default, as OPTIONAL, unless option -attributes is specified.
+CertReqCmd.24=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+CertReqCmd.23=Command options
+CertReqCmd.22=Alias of an entry in the key store on whose behalf the CSR is \
+generated. The value "mykey" (all lower case, without the enclosing quotes) \
+is used when this option is omitted.
+CertReqCmd.21=ALIAS
+CertReqCmd.20=Name of the digital signature algorithm to use for signing the \
+certificate. If omitted, a default value is chosen based on the type of the \
+private key associated with ALIAS. If the key is a "DSA" one, the value for \
+signature algorithm will be "SHA1withDSA". If on the other hand the key is \
+an "RSA" one, then "MD5withRSA" will be the signature algorithm.
+CertReqCmd.19=ALGORITHM
+CertReqCmd.18=Destination of the generated CSR. STDOUT is used if this \
+option is omitted.
+CertReqCmd.17=FILE
+CertReqCmd.16=Password to unlock the Key Entry associated with ALIAS. If \
+omitted, the tool will attempt to unlock the Key Entry using the same password \
+protecting the key store. If this fails, you will be prompted for a password.
+CertReqCmd.14=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+CertReqCmd.13=STORE_TYPE
+CertReqCmd.12=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+CertReqCmd.11=URL
+CertReqCmd.10=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+CertReqCmd.9=PASSWORD
+CertReqCmd.8=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+CertReqCmd.7=PROVIDER_CLASS_NAME
+CertReqCmd.6=Emit more verbose messages.
+CertReqCmd.5=Force the tool to encode a NULL DER value in the CSR as the value \
+of the Attributes field.
+
+DeleteCmd.19=Enter the Alias to delete:
+DeleteCmd.18=Usage: keytool -delete [OPTION]...\n\
+Delete a designated key store entry.
+DeleteCmd.17=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+DeleteCmd.16=Command options
+DeleteCmd.15=Alias of an entry to delete. The value "mykey" (all lower case, \
+without the enclosing quotes) is used when this option is omitted.
+DeleteCmd.14=ALIAS
+DeleteCmd.13=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+DeleteCmd.12=STORE_TYPE
+DeleteCmd.11=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+DeleteCmd.10=URL
+DeleteCmd.20=Alias MUST NOT be null or an empty string
+DeleteCmd.9=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+DeleteCmd.8=PASSWORD
+DeleteCmd.7=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+DeleteCmd.6=PROVIDER_CLASS_NAME
+DeleteCmd.5=Emit more verbose messages.
+
+GenKeyCmd.0=\nYou are about to enter information that will be incorporated into\n\
+your certificate request. This information is what is called a\n\
+Distinguished Name or DN. There are quite a few fields but you\n\
+can use supplied default values, displayed between brackets, by just\n\
+hitting <Enter>, or blank the field by entering the <.> character\n\
+before hitting <Enter>.\n\n
+GenKeyCmd.6=The Sample Company
+GenKeyCmd.7=Sydney
+GenKeyCmd.8=NSW
+GenKeyCmd.9=AU
+GenKeyCmd.10=Common Name (hostname, IP, or your name):
+GenKeyCmd.11=Organization Name (company) [{0}]:
+GenKeyCmd.13=Organizational Unit Name (department, division):
+GenKeyCmd.14=Locality Name (city, district) [{0}]:
+GenKeyCmd.16=State or Province Name (full name) [{0}]:
+GenKeyCmd.18=Country Name (2 letter code) [{0}]:
+GenKeyCmd.54=Key size MUST be greater than zero
+GenKeyCmd.57=Usage: keytool -genkey [OPTION]...\n\
+Generate a new key-pair and save these credentials in the key store as a Key \
+Entry, associated with a designated Alias.
+GenKeyCmd.58=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+GenKeyCmd.59=Command options
+GenKeyCmd.60=Alias of the Key Entry to generate. The value "mykey" (all lower \
+case, without the enclosing quotes) is used when this option is omitted.
+GenKeyCmd.61=ALIAS
+GenKeyCmd.62=Name of the key-pair generation algorithm. The default value is \
+"DSS" (a synonym for the Digital Signature Algorithm also known as DSA).
+GenKeyCmd.63=ALGORITHM
+GenKeyCmd.64=Number of bits of the shared modulus, for both the public and \
+private keys, to use for the new keys. If omitted, 1024 is used.
+GenKeyCmd.65=SIZE
+GenKeyCmd.66=Name of the digital signature algorithm to use for signing the \
+certificate. If omitted, a default value is chosen based on the type of the \
+private key associated with ALIAS. If the key is a "DSA" one, the value for \
+signature algorithm will be "SHA1withDSA". If on the other hand the key is \
+an "RSA" one, then "MD5withRSA" will be the signature algorithm.
+GenKeyCmd.68=The X.500 Distinguished Name of the Subject of the generated \
+certificate. If omitted you will be prompted for one.
+GenKeyCmd.69=NAME
+GenKeyCmd.70=Password to protect the newly created Key Entry. If omitted, \
+you will be prompted to provide a password.
+GenKeyCmd.71=PASSWORD
+GenKeyCmd.72=Number of days the generated certificate is valid for. If \
+omitted, 90 is used.
+GenKeyCmd.73=DAY_COUNT
+GenKeyCmd.74=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+GenKeyCmd.75=STORE_TYPE
+GenKeyCmd.76=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+GenKeyCmd.77=URL
+GenKeyCmd.78=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+GenKeyCmd.80=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+GenKeyCmd.81=PROVIDER_CLASS_NAME
+GenKeyCmd.82=Emit more verbose messages.
+
+StorePasswdCmd.19=Too many failed attempts
+StorePasswdCmd.18=Usage: keytool -storepasswd [OPTION]...\n\
+Change the password protecting a key store.
+StorePasswdCmd.17=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+StorePasswdCmd.16=Command options
+StorePasswdCmd.15=The new, and different, password to protect the key store. \
+If omitted, you will be prompted for one.
+StorePasswdCmd.13=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+StorePasswdCmd.12=STORE_TYPE
+StorePasswdCmd.11=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+StorePasswdCmd.10=URL
+StorePasswdCmd.20=Enter new key store password:
+StorePasswdCmd.21=Password MUST be at least 6 characters.
+StorePasswdCmd.22=New password MUST be different than the old one.
+StorePasswdCmd.23=Re-enter new key store password:
+StorePasswdCmd.24=Passwords MUST be the same in both attempts.
+StorePasswdCmd.9=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+StorePasswdCmd.8=PASSWORD
+StorePasswdCmd.7=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+StorePasswdCmd.6=PROVIDER_CLASS_NAME
+StorePasswdCmd.5=Emit more verbose messages.
+
+KeyPasswdCmd.24=Enter new key password for <{0}>:
+KeyPasswdCmd.28=Re-enter new key password for <{0}>:
+KeyPasswdCmd.23=Usage: keytool -keypasswd [OPTION]...\n\
+Change the password protecting a Key Entry.
+KeyPasswdCmd.22=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+KeyPasswdCmd.21=Command options
+KeyPasswdCmd.20=The Alias which password is to be changed.
+KeyPasswdCmd.19=ALIAS
+KeyPasswdCmd.18=Password to unlock ALIAS. If omitted, the tool will attempt \
+to unlock the Key Entry using the same password protecting the key store. If \
+this fails, you will be prompted for a password.
+KeyPasswdCmd.16=The new, and different, password to protect ALIAS.
+KeyPasswdCmd.14=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+KeyPasswdCmd.13=STORE_TYPE
+KeyPasswdCmd.12=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+KeyPasswdCmd.11=URL
+KeyPasswdCmd.10=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+KeyPasswdCmd.9=PASSWORD
+KeyPasswdCmd.8=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+KeyPasswdCmd.7=PROVIDER_CLASS_NAME
+KeyPasswdCmd.6=Emit more verbose messages.
+
+KeyCloneCmd.23=Destination Alias MUST NOT exist in key store
+KeyCloneCmd.26=Enter destination alias:
+KeyCloneCmd.27=Destination alias MUST NOT be null nor empty
+KeyCloneCmd.28=Enter new key password for <{0}> [{1}]:
+KeyCloneCmd.22=Usage: keytool -keyclone [OPTION]...\n\
+Clone an existing Key Entry and store it under a new (different) Alias \
+protecting its private key material with possibly a new password.
+KeyCloneCmd.21=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+KeyCloneCmd.20=Command options
+KeyCloneCmd.19=Alias of an entry to clone. The value "mykey" (all lower case, \
+without the enclosing quotes) is used when this option is omitted.
+KeyCloneCmd.17=Alias to identify the cloned copy of the Key Entry.
+KeyCloneCmd.16=ALIAS
+KeyCloneCmd.15=Password to unlock the Key Entry associated with the Alias to \
+clone. If omitted, the tool will attempt to unlock the Key Entry using the \
+same password protecting the key store. If this fails, you will be prompted \
+for a password.
+KeyCloneCmd.13=Password to protect the cloned copy of the Key Entry. If \
+omitted, you will be prompted to provide one.
+KeyCloneCmd.11=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+KeyCloneCmd.10=STORE_TYPE
+KeyCloneCmd.9=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+KeyCloneCmd.8=URL
+KeyCloneCmd.7=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+KeyCloneCmd.6=PASSWORD
+KeyCloneCmd.5=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+KeyCloneCmd.4=PROVIDER_CLASS_NAME
+KeyCloneCmd.3=Emit more verbose messages.
+
+ListCmd.21=Key store type: {0}
+ListCmd.22=Key store provider: {0}
+ListCmd.24=Key store contains {0,number} entry(ies)
+ListCmd.20=Usage: keytool -list [OPTION]...\n\
+Print one or all of the key store entries to STDOUT. Usually this command \
+will only print a fingerprint of the certificate, unless either -rfc or -v \
+is specified.
+ListCmd.30=Alias name: {0}
+ListCmd.31=Creation timestamp: {0,date,full} - {0,time,full}
+ListCmd.32=Entry type: trusted-certificate
+ListCmd.33=Entry type: key-entry
+ListCmd.34=Alias [{0}] is unknown to the key store
+ListCmd.38=Certificate chain length: {0,number}
+ListCmd.39=Certificate[1]:
+ListCmd.40=Certificate[{0,number}]:
+ListCmd.42=*******************************************
+ListCmd.43=-----BEGIN CERTIFICATE-----
+ListCmd.44=-----END CERTIFICATE-----
+ListCmd.45=Certificate fingerprint (MD5): {0}
+ListCmd.19=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+ListCmd.18=Command options
+ListCmd.17=Alias of an entry to list. If omitted, all entries are listed.
+ListCmd.16=ALIAS
+ListCmd.15=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+ListCmd.14=STORE_TYPE
+ListCmd.13=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+ListCmd.12=URL
+ListCmd.11=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+ListCmd.10=PASSWORD
+ListCmd.9=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+ListCmd.8=PROVIDER_CLASS_NAME
+ListCmd.7=Output the certificate in human-readable format, even if -rfc is \
+also specified.
+ListCmd.6=Use RFC-1421 specifications when encoding the output.
+
+ImportCmd.34=Failed to establish chain-of-trust from reply
+ImportCmd.37=Unable to find anchor certificate for {0}
+ImportCmd.38=Public keys, in key store and certificate, MUST be of the same type
+ImportCmd.32=Can this certificate be trusted?
+ImportCmd.40=Key entry associated with {0} has an unknown or unsupported public key type {1}
+ImportCmd.41=Public keys, in key store and certificate, MUST be the same
+ImportCmd.29=Certificate was added to the key store
+ImportCmd.28=Certificate was not added to the key store
+ImportCmd.27=Usage: keytool -import [OPTION]...\n\
+Read an X.509 certificate, or a PKCS#7 Certificate Reply from a designated \
+input source and incorporate the certificates into the key store.
+ImportCmd.26=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+ImportCmd.25=Command options
+ImportCmd.24=If ALIAS does not already exist in the key store, the tool treats \
+the certificate in FILE as a new Trusted Certificate.\n\
+If ALIAS exists in the key store, the tool will treat the certificate(s) in \
+FILE as a Certificate Reply (which can be a chain of certificates).
+ImportCmd.23=ALIAS
+ImportCmd.22=Location of the Certificate or Certificate Reply to import.
+ImportCmd.21=FILE
+ImportCmd.20=Password to protect the Key Entry associated with ALIAS. If \
+this option is omitted, and the chain-of-trust for the Certificate Reply has \
+been established, the tool will first attempt to unlock the Key Entry using \
+the same password protecting the key store. If this fails, you will be \
+prompted to provide a password.
+ImportCmd.19=PASSWORD
+ImportCmd.18=Prevent the tool from prompting the user.
+ImportCmd.17=Additionally use a key store, of type "JKS", named "cacerts", \
+and located in lib/security in an installed Java Runtime Environment, when \
+trying to establish chains-of-trust.
+ImportCmd.16=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+ImportCmd.15=STORE_TYPE
+ImportCmd.14=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+ImportCmd.13=URL
+ImportCmd.12=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+ImportCmd.11=PASSWORD
+ImportCmd.10=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+ImportCmd.9=PROVIDER_CLASS_NAME
+ImportCmd.8=Emit more verbose messages.
+ImportCmd.7=Was unable to build a certificate-chain. Only {0,number} out of {1,number} certificates were processed
+
+ExportCmd.17=Usage: keytool -export [OPTION]...\n\
+Export a certificate stored in the key store to a designated output \
+destination, either in binary format or in RFC-1421 compliant encoding.
+ExportCmd.18=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+ExportCmd.19=Command options
+ExportCmd.20=Alias of an entry to export. The value "mykey" (all lower case, \
+without the enclosing quotes) is used when this option is omitted.
+ExportCmd.21=ALIAS
+ExportCmd.22=Destination of the exported certificate. STDOUT is used if this \
+option is omitted.
+ExportCmd.23=FILE
+ExportCmd.24=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+ExportCmd.25=STORE_TYPE
+ExportCmd.26=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+ExportCmd.27=URL
+ExportCmd.28=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+ExportCmd.29=PASSWORD
+ExportCmd.30=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+ExportCmd.31=PROVIDER_CLASS_NAME
+ExportCmd.32=Use RFC-1421 specifications when encoding the output.
+ExportCmd.33=Output the certificate in binary DER encoding, which is the \
+default format. If -rfc is also present, this option is ignored.
+
+IdentityDBCmd.7=Usage: keytool -identitydb [OPTION]...\n\
+NOT IMPLEMENTED YET. Import a JDK 1.1 style Identity Database.
+IdentityDBCmd.8=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+IdentityDBCmd.9=Command options
+IdentityDBCmd.10=Location of the Identity Database to import. If omitted, \
+STDIN is used.
+IdentityDBCmd.11=FILE
+IdentityDBCmd.12=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+IdentityDBCmd.13=STORE_TYPE
+IdentityDBCmd.14=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+IdentityDBCmd.15=URL
+IdentityDBCmd.16=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+IdentityDBCmd.17=PASSWORD
+IdentityDBCmd.18=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+IdentityDBCmd.19=PROVIDER_CLASS_NAME
+IdentityDBCmd.20=Emit more verbose messages.
+
+PrintCertCmd.5=Usage: keytool -printcert [OPTION]...\n\
+Read a certificate from FILE and print it to STDOUT in a human-readable form.
+PrintCertCmd.6=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+PrintCertCmd.7=Command options
+PrintCertCmd.8=Location of the certificate to print. If omitted, STDIN is used.
+PrintCertCmd.9=FILE
+PrintCertCmd.10=Emit more verbose messages.
+
+SelfCertCmd.14=Usage: keytool -selfcert [OPTION]...\n\
+Generate a self-signed X.509 version 1 certificate.\n\n\
+The newly generated certificate will form a chain of one element which will \
+replace the previous chain associated with ALIAS.
+SelfCertCmd.15=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+SelfCertCmd.16=Command options
+SelfCertCmd.17=Alias of the Key Entry to select. The value "mykey" (all lower \
+case, without the enclosing quotes) is used when this option is omitted.
+SelfCertCmd.18=ALIAS
+SelfCertCmd.19=Name of the digital signature algorithm to use for signing the \
+certificate. If omitted, a default value is chosen based on the type of the \
+private key associated with ALIAS. If the key is a "DSA" one, the value for \
+signature algorithm will be "SHA1withDSA". If on the other hand the key is \
+an "RSA" one, then "MD5withRSA" will be the signature algorithm.
+SelfCertCmd.20=ALGORITHM
+SelfCertCmd.21=The X.500 Distinguished Name of the Subject of the generated \
+certificate. If omitted the Distinguished Name of the base certificate in \
+the chain associated with ALIAS is used instead.
+SelfCertCmd.22=NAME
+SelfCertCmd.23=Password to unlock the Key Entry associated with ALIAS. If \
+omitted, the tool will attempt to unlock the Key Entry using the same password \
+protecting the key store. If this fails, you will be prompted for a password.
+SelfCertCmd.24=PASSWORD
+SelfCertCmd.25=Number of days the generated certificate is valid for. If \
+omitted, 90 is used.
+SelfCertCmd.26=DAY_COUNT
+SelfCertCmd.27=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+SelfCertCmd.28=STORE_TYPE
+SelfCertCmd.29=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+SelfCertCmd.30=URL
+SelfCertCmd.31=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+SelfCertCmd.32=PASSWORD
+SelfCertCmd.33=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+SelfCertCmd.34=PROVIDER_CLASS_NAME
+SelfCertCmd.35=Emit more verbose messages.
+
+CACertCmd.0=Alias [{0}] is already present in key store
+CACertCmd.1=Certificate in file "{0}" was added to the key store under the alias "{1}"
+CACertCmd.2=Usage: keytool -cacert [OPTION]...\n\
+Import a trusted CA certificate.
+CACertCmd.3=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
+CACertCmd.4=Command options
+CACertCmd.5=Location of the trusted CA certificate to import.
+CACertCmd.6=FILE
+CACertCmd.7=Type of the key store to use. If omitted, the default value is \
+that of the property "keystore.type" in the security properties file.
+CACertCmd.8=STORE_TYPE
+CACertCmd.9=Location of the key store to use. The default value is a \
+file-based scheme whose path is the file named ".keystore" in your home \
+directory.\n\
+If URL is malformed, the tool will use URL as a file-name of a key store; \
+i.e. as if the protocol was "file:".
+CACertCmd.10=URL
+CACertCmd.11=Password to unlock the key store. If omitted, you will be \
+prompted for one.
+CACertCmd.12=PASSWORD
+CACertCmd.13=Fully qualified class name of a Security Provider to add to the \
+JVM in-use.
+CACertCmd.14=PROVIDER_CLASS_NAME
+CACertCmd.15=Emit more verbose messages.
--- /dev/null
+# messages.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.
+
+Native2ASCII.TooManyFiles=too many files specified
+Native2ASCII.Usage=Usage: native2ascii [OPTIONS]... [INPUTFILE [OUTPUTFILE]]
+Native2ASCII.EncodingHelp=encoding to use
+Native2ASCII.EncodingArgName=NAME
+Native2ASCII.EncodingSpecified=encoding already specified
+Native2ASCII.ReverseHelp=convert from encoding to native
+
--- /dev/null
+# messages.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.
+
+Main.Usage=Usage: orbd [OPTIONS]
+Main.ORBInitialPort=port on which persistent naming service is to be started
+Main.Port=PORT
+Main.IOR=file in which to store persistent naming service's IOR reference
+Main.IORFile=FILE
+Main.Restart=restart persistent naming service, clearing persistent naming database
+Main.Directory=directory in which to store persistent data
+Main.DirectoryArgument=DIRECTORY
+Main.InternalError=orbd: internal error:
--- /dev/null
+# messages.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.
+
+Main.Usage:rmic [OPTIONS] CLASSNAME...
+Main.NoWarn:show no warnings
+Main.NoWrite:check for errors and do not write any files
+Main.Verbose:show verbose output
+Main.DirOpt:write generated files to given directory
+Main.DirArg:DIRECTORY
+Main.ClasspathOpt:where to find input classes
+Main.ClasspathArg:PATH
+Main.BootclasspathOpt:where to find classes used to run rmic (ignored)
+Main.BootclasspathArg:PATH
+Main.ExtdirsOpt:where to find extension classes used to run rmic (ignored)
+Main.ExtdirsArg:PATH
+Main.IIOP:generate stubs and ties for IIOP
+Main.Always:always overwrite generated files (ignored)
+Main.AlwaysGenerate:same as -always
+Main.NoLocalStubs:do not create same-process stubs (ignored)
+Main.POA:generate servant-based ties
+Main.Keep:keep generated stub, skeleton and tie sources
+Main.KeepGenerated:same as -keep
+Main.v11:generate JDK 1.1 protocol stubs and skeletons
+Main.v12:generate JDK 1.2 JRMP stubs (default)
+Main.vcompat:generate JDK 1.1 protocol and JDK 1.2 JRMP stubs
+Main.DebugInfo:include debugging information in generated classes
+Main.InternalError:rmic: internal error:
--- /dev/null
+package #package;
+
+#imports
+import java.rmi.Remote;
+import javax.rmi.PortableRemoteObject;
+import javax.rmi.CORBA.Tie;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.CORBA.portable.UnknownException;
+import org.omg.PortableServer.Servant;
+
+import org.omg.CORBA_2_3.portable.ObjectImpl;
+import org.omg.CORBA_2_3.portable.InputStream;
+
+// This Tie type is obsolete. Use the POA - based tie (key -poa).
+
+/**
+ * This class accepts remote calls to the served GIOP object and delegates them
+ * to the enclosed implementing class. Being derived from the ObjectImpl,
+ * it directly implements the GIOP Object.
+ *
+ * It is normally generated with grmic -impl
+ */
+public class _#nameImpl_Tie extends ObjectImpl implements Tie
+{
+ /**
+ * All decoded remote calls are forwarded to this target.
+ */
+ #implName target;
+
+ /**
+ * The array of repository ids, supported by this GIOP Object
+ */
+ private static final String[] type_ids =
+ {
+#idList
+ };
+
+ /**
+ * Get an array of all interfaces (repository ids),
+ * supported by this Object.
+ *
+ * @return the array of Ids.
+ */
+ public String[] _ids()
+ {
+ return type_ids;
+ }
+
+ /**
+ * Set the invocation target, where all received calls are finally
+ * forwarded.
+ *
+ * @param a_target the forwarding target
+ *
+ * @throws ClassCastException if the target is not an instance of
+ * #implName
+ */
+ public void setTarget(Remote a_target)
+ {
+ this.target = (#implName) a_target;
+ }
+
+ /**
+ * Get the invocation target, where all received calls are finally
+ * forwarded.
+ *
+ * @return the target, an instance of
+ * #implName
+ */
+ public Remote getTarget()
+ {
+ return target;
+ }
+
+ /**
+ * Return the actual GIOP object that would handle this request.
+ *
+ * @return <code>this</code>, always.
+ */
+ public org.omg.CORBA.Object thisObject()
+ {
+ return this;
+ }
+
+ /**
+ * Deactivates this object, disconnecting it from the orb.
+ */
+ public void deactivate()
+ {
+ _orb().disconnect(this);
+ _set_delegate(null);
+ target = null;
+ }
+
+ /**
+ * Get the {@link ORB} where this {@link Servant} is connected.
+ *
+ * @return the ORB
+ */
+ public ORB orb()
+ {
+ return _orb();
+ }
+
+ /**
+ * Connect this servant to the given ORB.
+ */
+ public void orb(ORB orb)
+ {
+ orb.connect(this);
+ }
+
+/**
+ * This method is invoked by ORB in response to the remote call. It redirects
+ * the call to one of the methods in the target.
+ *
+ * @param method the name of the method to call.
+ * @param parameter_stream the input stream, from where the parameters must be
+ * read.
+ * @param reply the response hander, providing methods to return the result.
+ *
+ * @return the output stream, created by the response handler
+ *
+ * @throws SystemException if one occurs during method invocation.
+ */
+ public OutputStream _invoke(String method,
+ org.omg.CORBA.portable.InputStream parameter_stream,
+ ResponseHandler reply)
+ {
+ try
+ {
+ InputStream in =(InputStream) parameter_stream;
+
+#tie_methods
+
+ throw new BAD_OPERATION("No such method: '"+method+"'");
+ }
+ catch (SystemException ex)
+ {
+ throw ex;
+ }
+ catch (Throwable ex)
+ {
+ throw new UnknownException(ex);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package #package;
+
+#imports
+import java.rmi.UnexpectedException;
+
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+import org.omg.CORBA_2_3.portable.OutputStream;
+
+/**
+ * This class delegates its method calls to the remote GIOP object.
+ * It is normally generated with grmic.
+ */
+public class _#name_Stub extends Stub
+ implements #interfaces
+{
+ /**
+ * Use serialVersionUID for interoperability.
+ */
+ private static final long serialVersionUID = 1;
+
+ /**
+ * The array of repository ids, supported by this GIOP Object
+ */
+ private static final String[] type_ids =
+ {
+#idList
+ };
+
+ /**
+ * Return the array of repository ids, supported by this GIOP Object.
+ *
+ * @return the array of Ids.
+ */
+ public String[] _ids()
+ {
+ return type_ids;
+ }
+
+#stub_methods
+}
\ No newline at end of file
--- /dev/null
+ /** @inheritDoc */
+ public #return_type #method_name(#argument_list) #throws
+ {
+ try
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out =
+ (OutputStream) _request("#giop_method_name", true);
+#argument_write
+ in = _invoke(out);
+ #read_return
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new UnexpectedException(in.read_string());
+ }
+ catch (RemarshalException ex)
+ {
+ return #method_name(#argument_names);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
--- /dev/null
+ /** @inheritDoc */
+ public #return_type #method_name(#argument_list) #throws
+ {
+ try
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out =
+ (OutputStream) _request("#giop_method_name", true);
+#argument_write
+ in = _invoke(out);
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new UnexpectedException(in.read_string());
+ }
+ catch (RemarshalException ex)
+ {
+ #method_name(#argument_names);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
--- /dev/null
+package #package;
+
+#imports
+import java.lang.reflect.Method;
+import java.rmi.server.RemoteRef;
+import java.rmi.server.RemoteStub;
+import java.rmi.UnexpectedException;
+
+/**
+ * This class delegates its method calls to the remote RMI object, referenced
+ * by {@link RemoteRef}.
+ *
+ * It is normally generated with rmic.
+ */
+public final class #name_Stub
+ extends RemoteStub
+ implements #interfaces
+{
+ /**
+ * Use serialVersionUID for interoperability
+ */
+ private static final long serialVersionUID = 2;
+
+ /**
+ * The explaining message for {@ling UnexpectedException}.
+ */
+ private static final String exception_message =
+ "undeclared checked exception";
+
+ /* All remote methods, invoked by this stub: */
+#stub_method_declarations
+ #zeroSizeObjecArray
+ static
+ {
+ #zeroSizeClassArray
+ try
+ {
+#stub_method_initializations
+ }
+ catch (NoSuchMethodException nex)
+ {
+ NoSuchMethodError err = new NoSuchMethodError(
+ "#name_Stub class initialization failed");
+ err.initCause(nex);
+ throw err;
+ }
+ }
+
+ /**
+ * Create the instance for _#name_Stub that forwards method calls to the
+ * remote object.
+ *
+ * @para the reference to the remote object.
+ */
+ public #name_Stub(RemoteRef reference)
+ {
+ super(reference);
+ }
+
+ /* Methods */
+#stub_methods
+}
--- /dev/null
+ /** @inheritDoc */
+ public #return_type #method_name(#argument_list) #throws
+ {
+ try
+ {
+ Object result = ref.invoke(this, met_#method_name,
+ #object_arg_list,
+ #method_hash);
+ #return_statement
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (RemoteException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ UnexpectedException uex = new UnexpectedException(exception_message);
+ uex.detail = e;
+ throw uex;
+ }
+ }
+
\ No newline at end of file
--- /dev/null
+ /** @inheritDoc */
+ public void #method_name(#argument_list) #throws
+ {
+ try
+ {
+ ref.invoke(this, met_#method_name,
+ #object_arg_list,
+ #method_hash);
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (RemoteException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ UnexpectedException uex = new UnexpectedException(exception_message);
+ uex.detail = e;
+ throw uex;
+ }
+ }
+
\ No newline at end of file
--- /dev/null
+package #package;
+
+#imports
+import java.rmi.Remote;
+import javax.rmi.PortableRemoteObject;
+import javax.rmi.CORBA.Tie;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.CORBA.portable.UnknownException;
+import org.omg.PortableServer.Servant;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+import org.omg.PortableServer.POAPackage.ObjectNotActive;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+
+import org.omg.CORBA_2_3.portable.InputStream;
+
+/**
+ * This class accepts remote calls to the served GIOP object and delegates them
+ * to the enclosed implementing class. Being servant, it must be connected to
+ * the ORB Poa.
+ * It is normally generated with grmic -poa
+ */
+public class _#nameImpl_Tie extends Servant implements Tie
+{
+ /**
+ * All decoded remote calls are forwarded to this target.
+ */
+ #implName target;
+
+ /**
+ * The array of repository ids, supported by this GIOP Object
+ */
+ private static final String[] type_ids =
+ {
+#idList
+ };
+
+ /**
+ * Get an array of all interfaces, supported by this
+ * {@link Servant}.
+ *
+ * @param poa unused
+ * @param objectId unused
+ *
+ * @return the array of Ids.
+ */
+ public String[] _all_interfaces(POA poa,
+ byte[] objectId
+ )
+ {
+ return type_ids;
+ }
+
+
+ /**
+ * Set the invocation target, where all received calls are finally
+ * forwarded.
+ *
+ * @param a_target the forwarding target
+ *
+ * @throws ClassCastException if the target is not an instance of
+ * #implName
+ */
+ public void setTarget(Remote a_target)
+ {
+ this.target = (#implName) a_target;
+ }
+
+ /**
+ * Get the invocation target, where all received calls are finally
+ * forwarded.
+ *
+ * @return the target, an instance of
+ * #implName
+ */
+ public Remote getTarget()
+ {
+ return target;
+ }
+
+ /**
+ * Return the actual GIOP object that would handle this request.
+ *
+ * @return the GIOP object.
+ */
+ public org.omg.CORBA.Object thisObject()
+ {
+ return _this_object();
+ }
+
+ /**
+ * Deactivate this {@link Servant}. The WrongPolicy, ObjectNotActive
+ * and ServantNotActive exceptions, if thrown during deactivation, are
+ * catched and silently ignored.
+ */
+ public void deactivate()
+ {
+ try
+ {
+ _poa().deactivate_object(_poa().servant_to_id(this));
+ }
+ catch (WrongPolicy exception)
+ {
+ }
+ catch (ObjectNotActive exception)
+ {
+ }
+ catch (ServantNotActive exception)
+ {
+ }
+ }
+
+ /**
+ * Get the {@link ORB} where this {@link Servant} is connected.
+ *
+ * @return the ORB
+ */
+ public ORB orb()
+ {
+ return _orb();
+ }
+
+ /**
+ * Connect this servant to the given ORB. It is recommended to connect
+ * servant to the ORBs root or other POA rather than using this method.
+ */
+ public void orb(ORB orb)
+ {
+ try
+ {
+ ((org.omg.CORBA_2_3.ORB) orb).set_delegate(this);
+ }
+ catch (ClassCastException e)
+ {
+ throw new org.omg.CORBA.BAD_PARAM(
+ "POA Servant requires an instance of org.omg.CORBA_2_3.ORB"
+ );
+ }
+ }
+
+/**
+ * This method is invoked by ORB in response to the remote call. It redirects
+ * the call to one of the methods in the target.
+ *
+ * @param method the name of the method to call.
+ * @param parameter_stream the input stream, from where the parameters must be
+ * read.
+ * @param reply the response hander, providing methods to return the result.
+ *
+ * @return the output stream, created by the response handler
+ *
+ * @throws SystemException if one occurs during method invocation.
+ */
+ public OutputStream _invoke(String method,
+ org.omg.CORBA.portable.InputStream parameter_stream,
+ ResponseHandler reply
+ ) throws SystemException
+ {
+ try
+ {
+ InputStream in =(InputStream) parameter_stream;
+ switch (method.charAt(#hashCharPos))
+ {
+#tie_methods
+ default: break;
+ }
+
+ throw new BAD_OPERATION("No such method: '"+method+"'");
+ }
+ catch (SystemException ex)
+ {
+ throw ex;
+ }
+ catch (Throwable ex)
+ {
+ throw new UnknownException(ex);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+ #hashCodeLabel
+ // #method_name
+ if (method.equals("#giop_method_name"))
+ {
+#read_and_define_args
+ OutputStream out = reply.createReply();
+ #return_type result =
+ target.#method_name(#argument_names);
+ #write_result
+ return out;
+ }
--- /dev/null
+ #hashCodeLabel
+ // #method_name
+ if (method.equals("#giop_method_name"))
+ {
+#read_and_define_args
+ OutputStream out = reply.createReply();
+ target.#method_name(#argument_names);
+ return out;
+ }
--- /dev/null
+# messages.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.
+
+Main.Usage=Usage: rmid [OPTIONS]
+Main.ControlGroup=Activation process control
+Main.PortOption=port on which activation system is to be started
+Main.Port=PORT
+Main.Restart=restart activation system, clearing persistent naming database, if any
+Main.Stop=stop activation system
+Main.PersistenceGroup=Persistence
+Main.Persistent=make activation system persistent
+Main.Directory=directory in which to store persistent data
+Main.DirectoryArgument=DIRECTORY
+Main.DebugGroup=Debugging
+Main.Verbose=log binding events to standard out
+Main.InternalError=rmid: internal error:
--- /dev/null
+# messages.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.
+
+Main.Usage=Usage: rmiregistry [OPTIONS] [PORT]
+Main.ControlGroup=Registry process control
+Main.Restart=restart RMI naming service, clearing persistent naming database, if any
+Main.Stop=stop RMI naming service
+Main.PersistenceGroup=Persistence
+Main.Persistent=make RMI naming service persistent
+Main.Directory=directory in which to store persistent data
+Main.DirectoryArgument=DIRECTORY
+Main.DebugGroup=Debugging
+Main.Verbose=log binding events to standard out
+Main.InternalError=rmiregistry: internal error:
--- /dev/null
+# messages.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.
+
+SerialVer.NoClassesSpecd=no classes specified
+SerialVer.HelpHeader=serialver [OPTIONS]... CLASS...\n\nPrint the serialVersionUID of the specified classes
+SerialVer.5=classpath
+SerialVer.ClasspathHelp=class path to use to find classes
+SerialVer.ClassNotSerial=serialver: class {0} is not serializable
+SerialVer.ClassNotFound=serialver: class {0} not found
+SerialVer.DupClasspath=classpath already specified
--- /dev/null
+# messages.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.
+
+Main.Usage=Usage: tnameserv [OPTIONS]
+Main.ORBInitialPort=port on which naming service is to be started
+Main.Port=PORT
+Main.IOR=file in which to store naming service's IOR reference
+Main.IORFile=FILE
+Main.InternalError=tnameserv: internal error:
--- /dev/null
+# messages.properties -- English language messages
+# Copyright (C) 2007 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.
+
+Main.InternalError:sun.rmi.rmic: failed to run rmic main method
import gnu.classpath.jdwp.util.MonitorInfo;
import gnu.classpath.jdwp.value.Value;
-import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
package gnu.java.lang.management;
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryPoolMXBean;
+import java.lang.management.MemoryType;
import java.lang.management.MemoryUsage;
+import java.util.Iterator;
+import java.util.List;
+
/**
* Provides access to information about the memory
* management of the current invocation of the virtual
*/
static MemoryUsage getHeapMemoryUsage()
{
- Runtime runtime = Runtime.getRuntime();
- long totalMem = runtime.totalMemory();
- return new MemoryUsage(-1, totalMem - runtime.freeMemory(),
- totalMem, runtime.maxMemory());
+ return getUsage(MemoryType.HEAP);
}
/**
* @return an {@link java.lang.management.MemoryUsage} instance
* for non-heap memory.
*/
- static native MemoryUsage getNonHeapMemoryUsage();
+ static MemoryUsage getNonHeapMemoryUsage()
+ {
+ return getUsage(MemoryType.NON_HEAP);
+ }
/**
* Returns the number of objects ready to be garbage collected.
*/
static native void setVerbose(boolean verbose);
+ /**
+ * Totals the memory usage from all the pools that match
+ * the given type.
+ *
+ * @param type the type of memory pools to accumulate
+ * (heap or non-heap).
+ * @return the memory usage overall.
+ */
+ private static MemoryUsage getUsage(MemoryType type) {
+ long init = 0, committed = 0, used = 0, max = 0;
+ Iterator pools =
+ ManagementFactory.getMemoryPoolMXBeans().iterator();
+ while (pools.hasNext())
+ {
+ MemoryPoolMXBean pool = (MemoryPoolMXBean) pools.next();
+ if (pool.getType() == type)
+ {
+ MemoryUsage usage = pool.getUsage();
+ if (init != -1)
+ {
+ long poolInit = usage.getInit();
+ if (poolInit == -1)
+ init = -1;
+ else
+ init += poolInit;
+ }
+ committed += usage.getCommitted();
+ used += usage.getUsed();
+ if (max != -1)
+ {
+ long poolMax = usage.getMax();
+ if (poolMax == -1)
+ max = -1;
+ else
+ max += poolMax;
+ }
+ }
+ }
+ return new MemoryUsage(init, used, committed, max);
+ }
+
}
* Assumes the that buffer list constains DirectBuffers. Will perform
* as gathering write.
*
- * @param fd
* @param srcs
* @param offset
* @param length
static native boolean create(String path) throws IOException;
/*
- * This native function actually produces the list of file in this
+ * This native function actually produces the list of files in this
* directory
*/
- static native String[] list(String dirpath);
+ static native synchronized String[] list(String dirpath);
/*
* This native method actually performs the rename.
*/
static native boolean mkdir(String dirpath);
+ /**
+ * Gets the total bytes of the filesystem named by path.
+ */
+ public static native long getTotalSpace(String path);
+
+ /**
+ * Gets the total free bytes of the filesystem named by path.
+ */
+ public static native long getFreeSpace(String path);
+
+ /**
+ * Gets the available bytes of the filesystem named by path.
+ */
+ public static native long getUsableSpace(String path);
+
/**
* Set the read permission of the file.
*/
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
/*
* This class is a reference version, mainly for compiling a class library
*/
static String getSimpleName(Class klass)
{
+ if (isAnonymousClass(klass))
+ return "";
if (isArray(klass))
{
return getComponentType(klass).getSimpleName() + "[]";
}
String fullName = getName(klass);
- return fullName.substring(fullName.lastIndexOf(".") + 1);
+ 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);
}
/**
*/
static String getCanonicalName(Class klass)
{
+ if (isLocalClass(klass) || isAnonymousClass(klass))
+ return null;
if (isArray(klass))
{
String componentName = getComponentType(klass).getCanonicalName();
String memberName = getDeclaringClass(klass).getCanonicalName();
if (memberName != null)
return memberName + "." + getSimpleName(klass);
+ else
+ return memberName;
}
- if (isLocalClass(klass) || isAnonymousClass(klass))
- return null;
return getName(klass);
}
initIDs();
}
- /**
- * 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
- * (masked by 0x7ff0000000000000L) represent the exponent, and bits 51-0
- * (masked by 0x000fffffffffffffL) are the mantissa. This function
- * collapses all versions of NaN to 0x7ff8000000000000L. The result of this
- * function can be used as the argument to
- * <code>Double.longBitsToDouble(long)</code> to obtain the original
- * <code>double</code> value.
- *
- * @param value the <code>double</code> to convert
- * @return the bits of the <code>double</code>
- * @see #longBitsToDouble(long)
- */
- public static native long doubleToLongBits(double value);
-
/**
* 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
}
}
- /**
- * 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
- * (masked by 0x7f800000) represent the exponent, and bits 22-0
- * (masked by 0x007fffff) are the mantissa. This function collapses all
- * versions of NaN to 0x7fc00000. The result of this function can be used
- * as the argument to <code>Float.intBitsToFloat(int)</code> to obtain the
- * original <code>float</code> value.
- *
- * @param value the <code>float</code> to convert
- * @return the bits of the <code>float</code>
- * @see #intBitsToFloat(int)
- */
- static native int floatToIntBits(float value);
-
/**
* 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
import gnu.java.lang.reflect.MethodSignatureParser;
+import java.lang.annotation.Annotation;
import java.util.Arrays;
/**
MethodSignatureParser p = new MethodSignatureParser(this, sig);
return p.getGenericParameterTypes();
}
+
+ /**
+ * <p>
+ * Return an array of arrays representing the annotations on each
+ * of the constructor's parameters. The outer array is aligned against
+ * the parameters of the constructors and is thus equal in length to
+ * the number of parameters (thus having a length zero if there are none).
+ * Each array element in the outer array contains an inner array which
+ * holds the annotations. This array has a length of zero if the parameter
+ * has no annotations.
+ * </p>
+ * <p>
+ * The returned annotations are serialized. Changing the annotations has
+ * no affect on the return value of future calls to this method.
+ * </p>
+ *
+ * @return an array of arrays which represents the annotations used on the
+ * parameters of this constructor. The order of the array elements
+ * matches the declaration order of the parameters.
+ * @since 1.5
+ */
+ public native Annotation[][] getParameterAnnotations();
+
}
import gnu.java.lang.reflect.MethodSignatureParser;
+import java.lang.annotation.Annotation;
import java.util.Arrays;
/**
* @since 1.5
*/
public native Object getDefaultValue();
+
+ /**
+ * <p>
+ * Return an array of arrays representing the annotations on each
+ * of the method's parameters. The outer array is aligned against
+ * the parameters of the method and is thus equal in length to
+ * the number of parameters (thus having a length zero if there are none).
+ * Each array element in the outer array contains an inner array which
+ * holds the annotations. This array has a length of zero if the parameter
+ * has no annotations.
+ * </p>
+ * <p>
+ * The returned annotations are serialized. Changing the annotations has
+ * no affect on the return value of future calls to this method.
+ * </p>
+ *
+ * @return an array of arrays which represents the annotations used on the
+ * parameters of this method. The order of the array elements
+ * matches the declaration order of the parameters.
+ * @since 1.5
+ */
+ public native Annotation[][] getParameterAnnotations();
+
}
package java.security;
-import gnu.classpath.SystemProperties;
-import gnu.java.security.action.GetSecurityPropertyAction;
-
-import java.net.URL;
-
/**
* VM-specific methods for generating real (or almost real) random
* seeds. VM implementors should write a version of this class that
GCJH=gcjh
;;
esac
+JAVAC="$GCJ -C"
+export JAVAC
fi
fi
# -Werror causes unavoidable problems in code using alsa.
+ac_configure_args="$ac_configure_args --disable-regen-headers"
ac_configure_args="$ac_configure_args --disable-Werror"
# Only use libltdl for non-newlib builds.
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:6003: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:6006: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:6006: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:6009: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:6009: output\"" >&5)
+ (eval echo "\"\$as_me:6012: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 7053 "configure"' > conftest.$ac_ext
+ echo '#line 7056 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8754: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8757: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8758: \$? = $ac_status" >&5
+ echo "$as_me:8761: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9076: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9079: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9080: \$? = $ac_status" >&5
+ echo "$as_me:9083: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9181: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9184: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9185: \$? = $ac_status" >&5
+ echo "$as_me:9188: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9236: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9239: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9240: \$? = $ac_status" >&5
+ echo "$as_me:9243: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12088 "configure"
+#line 12091 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12188 "configure"
+#line 12191 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14226: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14229: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14230: \$? = $ac_status" >&5
+ echo "$as_me:14233: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14325: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14328: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14329: \$? = $ac_status" >&5
+ echo "$as_me:14332: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14377: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14380: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14381: \$? = $ac_status" >&5
+ echo "$as_me:14384: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
-for ac_prog in gcj gcj-3.2 gcj-3.1 gcj-3.0 gcj-2.95
+for ac_prog in gcj
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-for ac_prog in gcj gcj-3.2 gcj-3.1 gcj-3.0 gcj-2.95
+for ac_prog in gcj
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15765: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15768: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15769: \$? = $ac_status" >&5
+ echo "$as_me:15772: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16081: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16084: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16085: \$? = $ac_status" >&5
+ echo "$as_me:16088: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16180: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16183: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16184: \$? = $ac_status" >&5
+ echo "$as_me:16187: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16232: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16235: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16236: \$? = $ac_status" >&5
+ echo "$as_me:16239: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
:
else
cat > conftest.$ac_ext << EOF
-#line 18588 "configure"
+#line 18591 "configure"
struct S { ~S(); };
void bar();
void foo()
fi
-for ac_prog in gcj gcj-3.2 gcj-3.1 gcj-3.0 gcj-2.95
+for ac_prog in gcj
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
GCJH=gcjh
;;
esac
+JAVAC="$GCJ -C"
+export JAVAC
AC_SUBST(GCJ_FOR_ECJX)
AC_SUBST(GCJH)
fi
fi
# -Werror causes unavoidable problems in code using alsa.
+ac_configure_args="$ac_configure_args --disable-regen-headers"
ac_configure_args="$ac_configure_args --disable-Werror"
dnl --with-gcj=$GCJ
dnl --with-javah=$GCJH
typedef struct _Jv_Field *jfieldID;
typedef struct _Jv_Method *jmethodID;
+enum _Jv_jobjectRefType
+{
+ JNIInvalidRefType = 0,
+ JNILocalRefType = 1,
+ JNIGlobalRefType = 2,
+ JNIWeakGlobalRefType = 3
+};
+typedef enum _Jv_jobjectRefType jobjectRefType;
+
extern "C" jobject _Jv_AllocObject (jclass) __attribute__((__malloc__));
extern "C" jobject _Jv_AllocObjectNoFinalizer (jclass) __attribute__((__malloc__));
extern "C" jobject _Jv_AllocObjectNoInitNoFinalizer (jclass) __attribute__((__malloc__));
import gnu.classpath.jdwp.util.MonitorInfo;
import gnu.classpath.jdwp.value.Value;
-import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_classpath_toolkit_DefaultDaemonThreadFactory__
+#define __gnu_classpath_toolkit_DefaultDaemonThreadFactory__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ namespace toolkit
+ {
+ class DefaultDaemonThreadFactory;
+ }
+ }
+ }
+}
+
+class gnu::classpath::toolkit::DefaultDaemonThreadFactory : public ::java::lang::Object
+{
+
+public:
+ DefaultDaemonThreadFactory();
+ virtual ::java::lang::Thread * newThread(::java::lang::Runnable *);
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_classpath_toolkit_DefaultDaemonThreadFactory__
JArray< jfloat > * pos;
JArray< ::java::awt::geom::AffineTransform * > * transforms;
jint layoutFlags;
+ ::java::awt::Shape * cleanOutline;
public:
static ::java::lang::Class class$;
};
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_font_OpenTypeFontPeer$XFontMetrics__
+#define __gnu_java_awt_font_OpenTypeFontPeer$XFontMetrics__
+
+#pragma interface
+
+#include <java/awt/FontMetrics.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace font
+ {
+ class OpenTypeFontPeer;
+ class OpenTypeFontPeer$XFontMetrics;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Font;
+ namespace geom
+ {
+ class Point2D;
+ }
+ }
+ }
+}
+
+class gnu::java::awt::font::OpenTypeFontPeer$XFontMetrics : public ::java::awt::FontMetrics
+{
+
+public: // actually package-private
+ OpenTypeFontPeer$XFontMetrics(::gnu::java::awt::font::OpenTypeFontPeer *, ::java::awt::Font *);
+public:
+ virtual jint getAscent();
+ virtual jint getDescent();
+ virtual jint getHeight();
+ virtual jint charWidth(jchar);
+ virtual jint charsWidth(JArray< jchar > *, jint, jint);
+ virtual jint stringWidth(::java::lang::String *);
+private:
+ ::java::awt::geom::Point2D * __attribute__((aligned(__alignof__( ::java::awt::FontMetrics)))) cachedPoint;
+public: // actually package-private
+ ::gnu::java::awt::font::OpenTypeFontPeer * this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_font_OpenTypeFontPeer$XFontMetrics__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_font_OpenTypeFontPeer$XLineMetrics__
+#define __gnu_java_awt_font_OpenTypeFontPeer$XLineMetrics__
+
+#pragma interface
+
+#include <java/awt/font/LineMetrics.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace font
+ {
+ class OpenTypeFontPeer;
+ class OpenTypeFontPeer$XLineMetrics;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Font;
+ namespace font
+ {
+ class FontRenderContext;
+ class GlyphVector;
+ }
+ }
+ namespace text
+ {
+ class CharacterIterator;
+ }
+ }
+}
+
+class gnu::java::awt::font::OpenTypeFontPeer$XLineMetrics : public ::java::awt::font::LineMetrics
+{
+
+public: // actually package-private
+ OpenTypeFontPeer$XLineMetrics(::gnu::java::awt::font::OpenTypeFontPeer *, ::java::awt::Font *, ::java::text::CharacterIterator *, jint, jint, ::java::awt::font::FontRenderContext *);
+public:
+ virtual jfloat getAscent();
+ virtual jint getBaselineIndex();
+ virtual JArray< jfloat > * getBaselineOffsets();
+ virtual jfloat getDescent();
+ virtual jfloat getHeight();
+ virtual jfloat getLeading();
+ virtual jint getNumChars();
+ virtual jfloat getStrikethroughOffset();
+ virtual jfloat getStrikethroughThickness();
+ virtual jfloat getUnderlineOffset();
+ virtual jfloat getUnderlineThickness();
+private:
+ ::java::awt::Font * __attribute__((aligned(__alignof__( ::java::awt::font::LineMetrics)))) font;
+ ::java::awt::font::GlyphVector * glyphVector;
+ ::java::awt::font::FontRenderContext * fontRenderContext;
+public: // actually package-private
+ ::gnu::java::awt::font::OpenTypeFontPeer * this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_font_OpenTypeFontPeer$XLineMetrics__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_font_OpenTypeFontPeer__
+#define __gnu_java_awt_font_OpenTypeFontPeer__
+
+#pragma interface
+
+#include <gnu/java/awt/peer/ClasspathFontPeer.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace font
+ {
+ class FontDelegate;
+ class OpenTypeFontPeer;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Font;
+ class FontMetrics;
+ namespace font
+ {
+ class FontRenderContext;
+ class GlyphVector;
+ class LineMetrics;
+ }
+ namespace geom
+ {
+ class AffineTransform;
+ class Rectangle2D;
+ }
+ }
+ namespace text
+ {
+ class CharacterIterator;
+ }
+ }
+}
+
+class gnu::java::awt::font::OpenTypeFontPeer : public ::gnu::java::awt::peer::ClasspathFontPeer
+{
+
+public:
+ OpenTypeFontPeer(::java::lang::String *, jint, jint);
+ OpenTypeFontPeer(::java::lang::String *, ::java::util::Map *);
+ virtual jboolean canDisplay(::java::awt::Font *, jint);
+ virtual jint canDisplayUpTo(::java::awt::Font *, ::java::text::CharacterIterator *, jint, jint);
+ virtual ::java::lang::String * getSubFamilyName(::java::awt::Font *, ::java::util::Locale *);
+ virtual ::java::lang::String * getPostScriptName(::java::awt::Font *);
+ virtual jint getNumGlyphs(::java::awt::Font *);
+ virtual jint getMissingGlyphCode(::java::awt::Font *);
+ virtual jbyte getBaselineFor(::java::awt::Font *, jchar);
+ virtual ::java::lang::String * getGlyphName(::java::awt::Font *, jint);
+ virtual ::java::awt::font::GlyphVector * createGlyphVector(::java::awt::Font *, ::java::awt::font::FontRenderContext *, ::java::text::CharacterIterator *);
+ virtual ::java::awt::font::GlyphVector * createGlyphVector(::java::awt::Font *, ::java::awt::font::FontRenderContext *, JArray< jint > *);
+ virtual ::java::awt::font::GlyphVector * layoutGlyphVector(::java::awt::Font *, ::java::awt::font::FontRenderContext *, JArray< jchar > *, jint, jint, jint);
+ virtual ::java::awt::FontMetrics * getFontMetrics(::java::awt::Font *);
+ virtual jboolean hasUniformLineMetrics(::java::awt::Font *);
+ virtual ::java::awt::font::LineMetrics * getLineMetrics(::java::awt::Font *, ::java::text::CharacterIterator *, jint, jint, ::java::awt::font::FontRenderContext *);
+ virtual ::java::awt::geom::Rectangle2D * getMaxCharBounds(::java::awt::Font *, ::java::awt::font::FontRenderContext *);
+ static ::java::lang::String * encodeFont(::java::lang::String *, ::java::util::Map *);
+public: // actually package-private
+ static ::java::lang::String * encodeFont(::java::lang::String *, jint);
+ static ::java::lang::String * validName(::java::lang::String *);
+public:
+ static JArray< ::java::lang::String * > * getAvailableFontFamilyNames(::java::util::Locale *);
+private:
+ static ::java::util::Set * getFontNames();
+ ::java::lang::String * mapFontToFilename(::java::lang::String *);
+public: // actually package-private
+ static ::gnu::java::awt::font::FontDelegate * access$0(::gnu::java::awt::font::OpenTypeFontPeer *);
+ static ::java::awt::geom::AffineTransform * access$1();
+private:
+ static ::java::util::Properties * fontProperties;
+ static ::java::util::Set * availableFontNames;
+ static ::java::util::Map * fontToFileMap;
+ static ::java::awt::geom::AffineTransform * IDENDITY;
+ ::gnu::java::awt::font::FontDelegate * __attribute__((aligned(__alignof__( ::gnu::java::awt::peer::ClasspathFontPeer)))) fontDelegate;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_font_OpenTypeFontPeer__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_image_AsyncImage$AsyncImageSource__
+#define __gnu_java_awt_image_AsyncImage$AsyncImageSource__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace image
+ {
+ class AsyncImage;
+ class AsyncImage$AsyncImageSource;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ namespace image
+ {
+ class ImageConsumer;
+ class ImageProducer;
+ }
+ }
+ }
+}
+
+class gnu::java::awt::image::AsyncImage$AsyncImageSource : public ::java::lang::Object
+{
+
+ AsyncImage$AsyncImageSource(::gnu::java::awt::image::AsyncImage *);
+public:
+ virtual void addConsumer(::java::awt::image::ImageConsumer *);
+ virtual jboolean isConsumer(::java::awt::image::ImageConsumer *);
+ virtual void removeConsumer(::java::awt::image::ImageConsumer *);
+ virtual void requestTopDownLeftRightResend(::java::awt::image::ImageConsumer *);
+ virtual void startProduction(::java::awt::image::ImageConsumer *);
+private:
+ ::java::awt::image::ImageProducer * getRealSource();
+public: // actually package-private
+ AsyncImage$AsyncImageSource(::gnu::java::awt::image::AsyncImage *, ::gnu::java::awt::image::AsyncImage$AsyncImageSource *);
+private:
+ ::java::awt::image::ImageProducer * __attribute__((aligned(__alignof__( ::java::lang::Object)))) realSource;
+public: // actually package-private
+ ::gnu::java::awt::image::AsyncImage * this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_image_AsyncImage$AsyncImageSource__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_image_AsyncImage__
+#define __gnu_java_awt_image_AsyncImage__
+
+#pragma interface
+
+#include <java/awt/Image.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace image
+ {
+ class AsyncImage;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Graphics;
+ class Image;
+ namespace image
+ {
+ class ImageObserver;
+ class ImageProducer;
+ }
+ }
+ }
+}
+
+class gnu::java::awt::image::AsyncImage : public ::java::awt::Image
+{
+
+public: // actually package-private
+ AsyncImage();
+public:
+ virtual void flush();
+ virtual ::java::awt::Graphics * getGraphics();
+ virtual jboolean isComplete();
+ virtual jint getHeight(::java::awt::image::ImageObserver *);
+ virtual ::java::lang::Object * getProperty(::java::lang::String *, ::java::awt::image::ImageObserver *);
+ virtual ::java::awt::image::ImageProducer * getSource();
+ virtual jint getWidth(::java::awt::image::ImageObserver *);
+ virtual void addObserver(::java::awt::image::ImageObserver *);
+ virtual jboolean prepareImage(jint, jint, ::java::awt::image::ImageObserver *);
+ virtual jint checkImage(jint, jint, ::java::awt::image::ImageObserver *);
+ virtual ::java::awt::Image * getRealImage();
+ virtual void setRealImage(::java::awt::Image *);
+ virtual void notifyObservers(jint, jint, jint, jint, jint);
+ virtual void waitForImage(::java::awt::image::ImageObserver *);
+public: // actually package-private
+ static ::java::awt::Image * access$0(::gnu::java::awt::image::AsyncImage *);
+private:
+ ::java::awt::Image * volatile __attribute__((aligned(__alignof__( ::java::awt::Image)))) realImage;
+public: // actually package-private
+ ::java::util::HashSet * observers;
+private:
+ jboolean volatile complete;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_image_AsyncImage__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_image_ImageConverter__
+#define __gnu_java_awt_image_ImageConverter__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace image
+ {
+ class AsyncImage;
+ class ImageConverter;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Image;
+ namespace image
+ {
+ class BufferedImage;
+ class ColorModel;
+ class IndexColorModel;
+ }
+ }
+ }
+}
+
+class gnu::java::awt::image::ImageConverter : public ::java::lang::Object
+{
+
+public:
+ ImageConverter();
+ virtual void setDimensions(jint, jint);
+ virtual void setProperties(::java::util::Hashtable *);
+ virtual void setColorModel(::java::awt::image::ColorModel *);
+ virtual void setHints(jint);
+ virtual void setPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jbyte > *, jint, jint);
+ virtual void setPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jint > *, jint, jint);
+private:
+ ::java::awt::image::ColorModel * setupColorModel(::java::awt::image::ColorModel *);
+ void createImage();
+ jint transferPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jbyte > *, jint, jint, jint);
+ jint transferPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jint > *, jint, jint, jint);
+ jint convertPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jbyte > *, jint, jint, jint);
+ jint convertPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jint > *, jint, jint, jint);
+ jint convertIndexColorModelToSRGB(jint, jint, jint, jint, ::java::awt::image::IndexColorModel *, JArray< jbyte > *, jint, jint, jint);
+ jint convertIndexColorModelToSRGB(jint, jint, jint, jint, ::java::awt::image::IndexColorModel *, JArray< jint > *, jint, jint, jint);
+ jint updateTransparency(jint, jint);
+public:
+ virtual void imageComplete(jint);
+ virtual void setTargetColorModel(::java::awt::image::ColorModel *);
+ virtual ::java::awt::Image * getImage();
+ static ::java::lang::String * IMAGE_TRANSPARENCY_PROPERTY;
+ static ::java::lang::String * IMAGE_PROPERTIES_PROPERTY;
+private:
+ ::gnu::java::awt::image::AsyncImage * __attribute__((aligned(__alignof__( ::java::lang::Object)))) image;
+ ::java::awt::image::BufferedImage * bImage;
+ ::java::util::Hashtable * imageProperties;
+ jint width;
+ jint height;
+ ::java::awt::image::ColorModel * colorModel;
+ ::java::awt::image::ColorModel * targetColorModel;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_image_ImageConverter__
class ScanlineConverter;
class ScanlineCoverage;
class ShapeCache;
+ class TextCacheKey;
}
}
}
virtual ::java::awt::Rectangle * getDeviceBounds();
virtual void rawDrawLine(jint, jint, jint, jint);
virtual void rawDrawRect(jint, jint, jint, jint);
- virtual void rawDrawString(::java::lang::String *, jint, jint);
virtual void rawClearRect(jint, jint, jint, jint);
virtual void rawFillRect(jint, jint, jint, jint);
virtual jboolean rawDrawImage(::java::awt::Image *, jint, jint, ::java::awt::image::ImageObserver *);
void updateOptimization();
static ::java::awt::Rectangle * computeIntersection(jint, jint, jint, jint, ::java::awt::Rectangle *);
void updateClip(::java::awt::geom::AffineTransform *);
- ::gnu::java::awt::java2d::ShapeCache * getShapeCache();
::gnu::java::awt::java2d::ScanlineConverter * getScanlineConverter();
+ void freeScanlineConverter(::gnu::java::awt::java2d::ScanlineConverter *);
+ static jboolean DEFAULT_TEXT_AA;
static ::java::awt::Font * FONT;
- static ::java::lang::ThreadLocal * shapeCache;
- static ::java::lang::ThreadLocal * scanlineConverters;
+ static const jint GV_CACHE_SIZE = 50;
+ static ::gnu::java::awt::java2d::ShapeCache * shapeCache;
+ static ::java::util::LinkedList * scanlineConverters;
+ static ::java::util::Map * gvCache;
+ static ::gnu::java::awt::java2d::TextCacheKey * searchTextKey;
public: // actually protected
::java::awt::geom::AffineTransform * __attribute__((aligned(__alignof__( ::java::awt::Graphics2D)))) transform__;
private:
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_java2d_PixelCoverage$Bucket__
+#define __gnu_java_awt_java2d_PixelCoverage$Bucket__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace java2d
+ {
+ class PixelCoverage$Bucket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::awt::java2d::PixelCoverage$Bucket : public ::java::lang::Object
+{
+
+ PixelCoverage$Bucket();
+public: // actually package-private
+ PixelCoverage$Bucket(::gnu::java::awt::java2d::PixelCoverage$Bucket *);
+ jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) xPos;
+ jint xCov;
+ jint yCov;
+ ::gnu::java::awt::java2d::PixelCoverage$Bucket * next;
+ ::gnu::java::awt::java2d::PixelCoverage$Bucket * prev;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_java2d_PixelCoverage$Bucket__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_java2d_PixelCoverage__
+#define __gnu_java_awt_java2d_PixelCoverage__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace java2d
+ {
+ class PixelCoverage;
+ class PixelCoverage$Bucket;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::awt::java2d::PixelCoverage : public ::java::lang::Object
+{
+
+public: // actually package-private
+ PixelCoverage();
+ void rewind();
+ void clear();
+ void add(jint, jint, jint);
+private:
+ ::gnu::java::awt::java2d::PixelCoverage$Bucket * findOrInsert(jint);
+ ::gnu::java::awt::java2d::PixelCoverage$Bucket * __attribute__((aligned(__alignof__( ::java::lang::Object)))) head;
+ ::gnu::java::awt::java2d::PixelCoverage$Bucket * current;
+ ::gnu::java::awt::java2d::PixelCoverage$Bucket * last;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_java2d_PixelCoverage__
public: // actually package-private
ScanlineConverter();
public:
- void renderShape(::gnu::java::awt::java2d::Pixelizer *, ::java::awt::Shape *, ::java::awt::Shape *, ::java::awt::geom::AffineTransform *, jint, ::java::awt::RenderingHints *);
+ void renderShape(::gnu::java::awt::java2d::Pixelizer *, ::java::awt::Shape *, ::java::awt::Shape *, ::java::awt::geom::AffineTransform *, jint, jint, ::java::awt::RenderingHints *);
private:
void clear();
void doScanline(::gnu::java::awt::java2d::Pixelizer *, jint, jboolean, jboolean);
- void setResolution(jint);
+ void setResolution(jint, jint);
void setUpperBounds(jint);
void addShape(::java::awt::geom::PathIterator *, jboolean);
void addEdge(::gnu::java::awt::java2d::PolyEdge *);
void edgePoolAdd(jint, jint, jint, jint, jboolean);
static jint FIXED_DIGITS;
static jint ONE;
- static jint Y_RESOLUTION;
jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) numScanlines;
JArray< ::gnu::java::awt::java2d::Scanline * > * scanlines;
jint upperBounds;
jint resolution;
+ jint yResolution;
jint halfStep;
JArray< jfloat > * coords;
::gnu::java::awt::java2d::ActiveEdges * activeEdges;
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_java2d_ShapeWrapper__
+#define __gnu_java_awt_java2d_ShapeWrapper__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace java2d
+ {
+ class ShapeWrapper;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Rectangle;
+ class Shape;
+ namespace geom
+ {
+ class AffineTransform;
+ class PathIterator;
+ class Point2D;
+ class Rectangle2D;
+ }
+ }
+ }
+}
+
+class gnu::java::awt::java2d::ShapeWrapper : public ::java::lang::Object
+{
+
+public:
+ ShapeWrapper(::java::awt::Shape *);
+ virtual jboolean contains(jdouble, jdouble);
+ virtual jboolean contains(::java::awt::geom::Point2D *);
+ virtual jboolean contains(jdouble, jdouble, jdouble, jdouble);
+ virtual jboolean contains(::java::awt::geom::Rectangle2D *);
+ virtual ::java::awt::Rectangle * getBounds();
+ virtual ::java::awt::geom::Rectangle2D * getBounds2D();
+ virtual ::java::awt::geom::PathIterator * getPathIterator(::java::awt::geom::AffineTransform *);
+ virtual ::java::awt::geom::PathIterator * getPathIterator(::java::awt::geom::AffineTransform *, jdouble);
+ virtual jboolean intersects(jdouble, jdouble, jdouble, jdouble);
+ virtual jboolean intersects(::java::awt::geom::Rectangle2D *);
+private:
+ ::java::awt::Shape * __attribute__((aligned(__alignof__( ::java::lang::Object)))) shape;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_java2d_ShapeWrapper__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_awt_java2d_TextCacheKey__
+#define __gnu_java_awt_java2d_TextCacheKey__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace awt
+ {
+ namespace java2d
+ {
+ class TextCacheKey;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace awt
+ {
+ class Font;
+ namespace font
+ {
+ class FontRenderContext;
+ }
+ }
+ }
+}
+
+class gnu::java::awt::java2d::TextCacheKey : public ::java::lang::Object
+{
+
+public:
+ TextCacheKey();
+ TextCacheKey(::java::lang::String *, ::java::awt::Font *, ::java::awt::font::FontRenderContext *);
+ virtual void setString(::java::lang::String *);
+ virtual void setFontRenderContext(::java::awt::font::FontRenderContext *);
+ virtual void setFont(::java::awt::Font *);
+ virtual jboolean equals(::java::lang::Object *);
+ virtual jint hashCode();
+private:
+ ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) string;
+ ::java::awt::font::FontRenderContext * fontRenderContext;
+ ::java::awt::Font * font;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_awt_java2d_TextCacheKey__
void lock();
void unlock();
public: // actually protected
- virtual jlong initFromVolatile(jlong, jint, jint);
+ virtual jlong initFromVolatile(jlong);
private:
void start_gdk_drawing();
void end_gdk_drawing();
virtual void gtkWidgetGetDimensions(JArray< jint > *);
virtual void gtkWidgetGetPreferredDimensions(JArray< jint > *);
virtual void gtkWindowGetLocationOnScreen(JArray< jint > *);
+ virtual void gtkWindowGetLocationOnScreenUnlocked(JArray< jint > *);
virtual void gtkWidgetGetLocationOnScreen(JArray< jint > *);
+ virtual void gtkWidgetGetLocationOnScreenUnlocked(JArray< jint > *);
virtual void gtkWidgetSetCursor(jint, ::gnu::java::awt::peer::gtk::GtkImage *, jint, jint);
virtual void gtkWidgetSetCursorUnlocked(jint, ::gnu::java::awt::peer::gtk::GtkImage *, jint, jint);
virtual void gtkWidgetSetBackground(jint, jint, jint);
{
namespace management
{
+ class MBeanConstructorInfo;
class MBeanInfo;
+ class MBeanOperationInfo;
class MBeanParameterInfo;
namespace openmbean
{
virtual ::java::lang::Object * getAttribute(::java::lang::String *);
public: // actually protected
virtual ::javax::management::MBeanInfo * getCachedMBeanInfo();
+ virtual ::java::lang::String * getDescription(::javax::management::MBeanConstructorInfo *, ::javax::management::MBeanParameterInfo *, jint);
+ virtual ::java::lang::String * getDescription(::javax::management::MBeanOperationInfo *, ::javax::management::MBeanParameterInfo *, jint);
+ virtual ::java::lang::String * getParameterName(::javax::management::MBeanConstructorInfo *, ::javax::management::MBeanParameterInfo *, jint);
+ virtual ::java::lang::String * getParameterName(::javax::management::MBeanOperationInfo *, ::javax::management::MBeanParameterInfo *, jint);
public:
virtual ::javax::management::MBeanInfo * getMBeanInfo();
private:
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_ByteCharset$1__
+#define __gnu_java_nio_charset_ByteCharset$1__
+
+#pragma interface
+
+#include <gnu/java/nio/charset/ByteDecodeLoopHelper.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class ByteCharset$1;
+ class ByteCharset$Decoder;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::ByteCharset$1 : public ::gnu::java::nio::charset::ByteDecodeLoopHelper
+{
+
+public: // actually package-private
+ ByteCharset$1(::gnu::java::nio::charset::ByteCharset$Decoder *);
+public: // actually protected
+ jboolean isMappable(jbyte);
+ jchar mapToChar(jbyte);
+public: // actually package-private
+ ::gnu::java::nio::charset::ByteCharset$Decoder * __attribute__((aligned(__alignof__( ::gnu::java::nio::charset::ByteDecodeLoopHelper)))) this$1;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_ByteCharset$1__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_ByteCharset$2__
+#define __gnu_java_nio_charset_ByteCharset$2__
+
+#pragma interface
+
+#include <gnu/java/nio/charset/ByteEncodeLoopHelper.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class ByteCharset$2;
+ class ByteCharset$Encoder;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::ByteCharset$2 : public ::gnu::java::nio::charset::ByteEncodeLoopHelper
+{
+
+public: // actually package-private
+ ByteCharset$2(::gnu::java::nio::charset::ByteCharset$Encoder *);
+public: // actually protected
+ jboolean isMappable(jchar);
+ jbyte mapToByte(jchar);
+public: // actually package-private
+ ::gnu::java::nio::charset::ByteCharset$Encoder * __attribute__((aligned(__alignof__( ::gnu::java::nio::charset::ByteEncodeLoopHelper)))) this$1;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_ByteCharset$2__
{
class ByteCharset;
class ByteCharset$Decoder;
+ class ByteDecodeLoopHelper;
}
}
}
ByteCharset$Decoder(::gnu::java::nio::charset::ByteCharset *);
public: // actually protected
::java::nio::charset::CoderResult * decodeLoop(::java::nio::ByteBuffer *, ::java::nio::CharBuffer *);
+public: // actually package-private
+ static JArray< jchar > * access$0(::gnu::java::nio::charset::ByteCharset$Decoder *);
private:
JArray< jchar > * __attribute__((aligned(__alignof__( ::java::nio::charset::CharsetDecoder)))) lookup;
+ ::gnu::java::nio::charset::ByteDecodeLoopHelper * helper;
public:
static ::java::lang::Class class$;
};
{
class ByteCharset;
class ByteCharset$Encoder;
+ class ByteEncodeLoopHelper;
}
}
}
jboolean canEncode(::java::lang::CharSequence *);
public: // actually protected
::java::nio::charset::CoderResult * encodeLoop(::java::nio::CharBuffer *, ::java::nio::ByteBuffer *);
+public: // actually package-private
+ static JArray< jbyte > * access$0(::gnu::java::nio::charset::ByteCharset$Encoder *);
private:
JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::nio::charset::CharsetEncoder)))) lookup;
+ ::gnu::java::nio::charset::ByteEncodeLoopHelper * helper;
public:
static ::java::lang::Class class$;
};
{
public: // actually package-private
- ByteCharset(::java::lang::String *, JArray< ::java::lang::String * > *);
+ ByteCharset(::java::lang::String *, JArray< ::java::lang::String * > *, JArray< jchar > *);
public:
virtual jboolean contains(::java::nio::charset::Charset *);
public: // actually package-private
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_ByteDecodeLoopHelper__
+#define __gnu_java_nio_charset_ByteDecodeLoopHelper__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class ByteDecodeLoopHelper;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ class CharBuffer;
+ namespace charset
+ {
+ class CoderResult;
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::ByteDecodeLoopHelper : public ::java::lang::Object
+{
+
+public:
+ ByteDecodeLoopHelper();
+public: // actually protected
+ virtual jboolean isMappable(jbyte) = 0;
+ virtual jchar mapToChar(jbyte) = 0;
+public: // actually package-private
+ virtual ::java::nio::charset::CoderResult * decodeLoop(::java::nio::ByteBuffer *, ::java::nio::CharBuffer *);
+private:
+ ::java::nio::charset::CoderResult * normalDecodeLoop(::java::nio::ByteBuffer *, ::java::nio::CharBuffer *);
+ ::java::nio::charset::CoderResult * arrayDecodeLoop(::java::nio::ByteBuffer *, ::java::nio::CharBuffer *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_ByteDecodeLoopHelper__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_ByteEncodeLoopHelper__
+#define __gnu_java_nio_charset_ByteEncodeLoopHelper__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class ByteEncodeLoopHelper;
+ }
+ }
+ }
+ }
+ namespace java
+ {
+ namespace nio
+ {
+ class ByteBuffer;
+ class CharBuffer;
+ namespace charset
+ {
+ class CoderResult;
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::ByteEncodeLoopHelper : public ::java::lang::Object
+{
+
+public:
+ ByteEncodeLoopHelper();
+public: // actually protected
+ virtual jboolean isMappable(jchar) = 0;
+ virtual jbyte mapToByte(jchar) = 0;
+public: // actually package-private
+ virtual ::java::nio::charset::CoderResult * encodeLoop(::java::nio::CharBuffer *, ::java::nio::ByteBuffer *);
+private:
+ ::java::nio::charset::CoderResult * normalEncodeLoop(::java::nio::CharBuffer *, ::java::nio::ByteBuffer *);
+ ::java::nio::charset::CoderResult * arrayEncodeLoop(::java::nio::CharBuffer *, ::java::nio::ByteBuffer *);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_ByteEncodeLoopHelper__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_ISO_8859_1$1__
+#define __gnu_java_nio_charset_ISO_8859_1$1__
+
+#pragma interface
+
+#include <gnu/java/nio/charset/ByteDecodeLoopHelper.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class ISO_8859_1$1;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::ISO_8859_1$1 : public ::gnu::java::nio::charset::ByteDecodeLoopHelper
+{
+
+public: // actually package-private
+ ISO_8859_1$1();
+public: // actually protected
+ jboolean isMappable(jbyte);
+ jchar mapToChar(jbyte);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_ISO_8859_1$1__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_ISO_8859_1$2__
+#define __gnu_java_nio_charset_ISO_8859_1$2__
+
+#pragma interface
+
+#include <gnu/java/nio/charset/ByteEncodeLoopHelper.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class ISO_8859_1$2;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::ISO_8859_1$2 : public ::gnu::java::nio::charset::ByteEncodeLoopHelper
+{
+
+public: // actually package-private
+ ISO_8859_1$2();
+public: // actually protected
+ jboolean isMappable(jchar);
+ jbyte mapToByte(jchar);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_ISO_8859_1$2__
{
namespace charset
{
+ class ByteDecodeLoopHelper;
class ISO_8859_1$Decoder;
}
}
ISO_8859_1$Decoder(::java::nio::charset::Charset *);
public: // actually protected
::java::nio::charset::CoderResult * decodeLoop(::java::nio::ByteBuffer *, ::java::nio::CharBuffer *);
+private:
+ static ::gnu::java::nio::charset::ByteDecodeLoopHelper * helper;
public:
static ::java::lang::Class class$;
};
{
namespace charset
{
+ class ByteEncodeLoopHelper;
class ISO_8859_1$Encoder;
}
}
jboolean canEncode(::java::lang::CharSequence *);
public: // actually protected
::java::nio::charset::CoderResult * encodeLoop(::java::nio::CharBuffer *, ::java::nio::ByteBuffer *);
+private:
+ static ::gnu::java::nio::charset::ByteEncodeLoopHelper * helper;
public:
static ::java::lang::Class class$;
};
{
namespace charset
{
+ class Provider;
class Provider$1;
}
}
public: // actually package-private
Provider$1();
public:
+ ::gnu::java::nio::charset::Provider * Provider$1$run();
::java::lang::Object * run();
static ::java::lang::Class class$;
};
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_US_ASCII$1__
+#define __gnu_java_nio_charset_US_ASCII$1__
+
+#pragma interface
+
+#include <gnu/java/nio/charset/ByteDecodeLoopHelper.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class US_ASCII$1;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::US_ASCII$1 : public ::gnu::java::nio::charset::ByteDecodeLoopHelper
+{
+
+public: // actually package-private
+ US_ASCII$1();
+public: // actually protected
+ jboolean isMappable(jbyte);
+ jchar mapToChar(jbyte);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_US_ASCII$1__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_nio_charset_US_ASCII$2__
+#define __gnu_java_nio_charset_US_ASCII$2__
+
+#pragma interface
+
+#include <gnu/java/nio/charset/ByteEncodeLoopHelper.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace nio
+ {
+ namespace charset
+ {
+ class US_ASCII$2;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::nio::charset::US_ASCII$2 : public ::gnu::java::nio::charset::ByteEncodeLoopHelper
+{
+
+public: // actually package-private
+ US_ASCII$2();
+public: // actually protected
+ jboolean isMappable(jchar);
+ jbyte mapToByte(jchar);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_nio_charset_US_ASCII$2__
{
namespace charset
{
+ class ByteDecodeLoopHelper;
class US_ASCII$Decoder;
}
}
US_ASCII$Decoder(::java::nio::charset::Charset *);
public: // actually protected
::java::nio::charset::CoderResult * decodeLoop(::java::nio::ByteBuffer *, ::java::nio::CharBuffer *);
+private:
+ static ::gnu::java::nio::charset::ByteDecodeLoopHelper * helper;
public:
static ::java::lang::Class class$;
};
{
namespace charset
{
+ class ByteEncodeLoopHelper;
class US_ASCII$Encoder;
}
}
jboolean canEncode(::java::lang::CharSequence *);
public: // actually protected
::java::nio::charset::CoderResult * encodeLoop(::java::nio::CharBuffer *, ::java::nio::ByteBuffer *);
+private:
+ static ::gnu::java::nio::charset::ByteEncodeLoopHelper * helper;
public:
static ::java::lang::Class class$;
};
public: // actually package-private
RMIClassLoaderImpl$MyClassLoader(JArray< ::java::net::URL * > *, ::java::lang::ClassLoader *, ::java::lang::String *);
-private:
- RMIClassLoaderImpl$MyClassLoader(JArray< ::java::net::URL * > *, ::java::lang::ClassLoader *);
public:
static ::java::lang::String * urlToAnnotation(JArray< ::java::net::URL * > *);
virtual ::java::lang::String * getClassAnnotation();
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_util_LRUCache__
+#define __gnu_java_util_LRUCache__
+
+#pragma interface
+
+#include <java/util/LinkedHashMap.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace util
+ {
+ class LRUCache;
+ }
+ }
+ }
+}
+
+class gnu::java::util::LRUCache : public ::java::util::LinkedHashMap
+{
+
+public:
+ LRUCache(jint);
+public: // actually protected
+ virtual jboolean removeEldestEntry(::java::util::Map$Entry *);
+private:
+ jint __attribute__((aligned(__alignof__( ::java::util::LinkedHashMap)))) capacity;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_util_LRUCache__
public: // actually package-private
REException(::java::lang::String *, jint, jint);
+ REException(::java::lang::String *, ::java::lang::Throwable *, jint, jint);
public:
virtual jint getType();
virtual jint getPosition();
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_java_util_regex_RETokenNamedProperty$JavaCategoryHandler__
+#define __gnu_java_util_regex_RETokenNamedProperty$JavaCategoryHandler__
+
+#pragma interface
+
+#include <gnu/java/util/regex/RETokenNamedProperty$Handler.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace java
+ {
+ namespace util
+ {
+ namespace regex
+ {
+ class RETokenNamedProperty$JavaCategoryHandler;
+ }
+ }
+ }
+ }
+}
+
+class gnu::java::util::regex::RETokenNamedProperty$JavaCategoryHandler : public ::gnu::java::util::regex::RETokenNamedProperty$Handler
+{
+
+public:
+ RETokenNamedProperty$JavaCategoryHandler(::java::lang::reflect::Method *);
+ virtual jboolean includes(jchar);
+private:
+ ::java::lang::reflect::Method * __attribute__((aligned(__alignof__( ::gnu::java::util::regex::RETokenNamedProperty$Handler)))) method;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_java_util_regex_RETokenNamedProperty$JavaCategoryHandler__
{
namespace sampled
{
- class AudioFormat;
class Control;
class Control$Type;
class Line;
virtual void removeLineListener(::javax::sound::sampled::LineListener *);
static ::java::lang::String * GST_BACKEND;
static ::java::lang::String * GST_DECODER;
+ static ::java::lang::String * GST_TYPE_NAME;
+ static ::java::lang::String * GST_FILE_EXTENSION;
private:
- static JArray< ::javax::sound::sampled::AudioFormat * > * BASIC_FORMATS;
static ::javax::sound::sampled::Mixer$Info * INFO;
public:
static ::java::lang::Class class$;
GstAudioFileReader();
virtual ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::io::File *);
virtual ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::io::InputStream *);
+private:
+ ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::io::InputStream *, ::java::lang::String *);
+public:
virtual ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::net::URL *);
virtual ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::java::io::File *);
virtual ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::java::io::InputStream *);
{
namespace gnu
{
+ namespace classpath
+ {
+ class Pointer;
+ }
namespace javax
{
namespace sound
static ::javax::sound::sampled::AudioFormat * getAudioFormat(::java::io::InputStream *);
static ::javax::sound::sampled::AudioFormat * getAudioFormat(::java::net::URL *);
private:
+ static ::javax::sound::sampled::AudioFormat * getAudioFormat(::java::io::InputStream *, ::gnu::javax::sound::sampled::gstreamer::io::GstAudioFileReaderNativePeer$GstHeader *);
static ::javax::sound::sampled::AudioFormat$Encoding * getEncoding(::gnu::javax::sound::sampled::gstreamer::io::GstAudioFileReaderNativePeer$GstHeader *);
static ::javax::sound::sampled::AudioFormat * getAudioFormat(::gnu::javax::sound::sampled::gstreamer::io::GstAudioFileReaderNativePeer$GstHeader *);
public: // actually protected
- static jboolean gstreamer_get_audio_format_stream(::gnu::javax::sound::sampled::gstreamer::io::GstAudioFileReaderNativePeer$GstHeader *, ::java::io::BufferedInputStream *);
+ static jboolean gstreamer_get_audio_format_stream(::gnu::javax::sound::sampled::gstreamer::io::GstAudioFileReaderNativePeer$GstHeader *, ::gnu::classpath::Pointer *);
static jboolean gstreamer_get_audio_format_file(::gnu::javax::sound::sampled::gstreamer::io::GstAudioFileReaderNativePeer$GstHeader *);
private:
+ static void init_id_cache();
static ::java::lang::String * GST_ENCODING;
public:
static ::java::lang::Class class$;
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_io_GstInputStream__
+#define __gnu_javax_sound_sampled_gstreamer_io_GstInputStream__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ class Pointer;
+ }
+ namespace javax
+ {
+ namespace sound
+ {
+ namespace sampled
+ {
+ namespace gstreamer
+ {
+ namespace io
+ {
+ class GstInputStream;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::javax::sound::sampled::gstreamer::io::GstInputStream : public ::java::lang::Object
+{
+
+public:
+ GstInputStream(::java::io::InputStream *);
+ virtual jint read(JArray< jbyte > *, jint, jint);
+ virtual jint available();
+ virtual ::gnu::classpath::Pointer * getNativeClass();
+private:
+ void init_instance();
+ static void init_id_cache();
+ ::java::io::InputStream * __attribute__((aligned(__alignof__( ::java::lang::Object)))) istream;
+ ::gnu::classpath::Pointer * gstInputStream;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_javax_sound_sampled_gstreamer_io_GstInputStream__
+++ /dev/null
-
-// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
-
-#ifndef __gnu_javax_sound_sampled_gstreamer_lines_GstDataLine$State__
-#define __gnu_javax_sound_sampled_gstreamer_lines_GstDataLine$State__
-
-#pragma interface
-
-#include <java/lang/Enum.h>
-#include <gcj/array.h>
-
-extern "Java"
-{
- namespace gnu
- {
- namespace javax
- {
- namespace sound
- {
- namespace sampled
- {
- namespace gstreamer
- {
- namespace lines
- {
- class GstDataLine$State;
- }
- }
- }
- }
- }
- }
-}
-
-class gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State : public ::java::lang::Enum
-{
-
- GstDataLine$State(::java::lang::String *, jint);
-public:
- static JArray< ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * > * values();
- static ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * valueOf(::java::lang::String *);
- static ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * PLAY;
- static ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * PAUSE;
- static ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * STOP;
-private:
- static JArray< ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * > * ENUM$VALUES;
-public:
- static ::java::lang::Class class$;
-};
-
-#endif // __gnu_javax_sound_sampled_gstreamer_lines_GstDataLine$State__
namespace lines
{
class GstDataLine;
- class GstDataLine$State;
}
}
}
virtual jint getBufferSize();
virtual ::javax::sound::sampled::AudioFormat * getFormat();
virtual jfloat getLevel();
- virtual jboolean isRunning();
virtual void addLineListener(::javax::sound::sampled::LineListener *);
virtual ::javax::sound::sampled::Control * getControl(::javax::sound::sampled::Control$Type *);
virtual JArray< ::javax::sound::sampled::Control * > * getControls();
virtual ::javax::sound::sampled::Line$Info * getLineInfo();
virtual jboolean isControlSupported(::javax::sound::sampled::Control$Type *);
virtual jboolean isOpen();
- virtual void open();
virtual void removeLineListener(::javax::sound::sampled::LineListener *);
+public: // actually protected
+ virtual void setOpen(::java::lang::Boolean *);
+ virtual void setBufferSize(jint);
+ virtual void setFormat(::javax::sound::sampled::AudioFormat *);
+public:
virtual jint available() = 0;
virtual void drain() = 0;
virtual void flush() = 0;
virtual jlong getLongFramePosition() = 0;
virtual jlong getMicrosecondPosition() = 0;
virtual jboolean isActive() = 0;
+ virtual jboolean isRunning() = 0;
virtual void start() = 0;
virtual void stop() = 0;
virtual void close() = 0;
+ virtual void open() = 0;
static const jint DEFAULT_BUFFER_SIZE = 1024;
public: // actually protected
- ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine$State * __attribute__((aligned(__alignof__( ::java::lang::Object)))) state;
- ::java::lang::Boolean * open__;
+ ::java::lang::Boolean * __attribute__((aligned(__alignof__( ::java::lang::Object)))) open;
private:
::javax::sound::sampled::AudioFormat * format;
jint bufferSize;
{
namespace gnu
{
+ namespace classpath
+ {
+ class Pointer;
+ }
namespace javax
{
namespace sound
namespace lines
{
class GstNativeDataLine;
+ class GstPipeline;
}
}
}
public:
GstNativeDataLine();
+ static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline * createSourcePipeline(jint);
+private:
+ static void init_id_cache();
+ static jboolean setup_sink_pipeline(::gnu::classpath::Pointer *);
+public:
static ::java::lang::Class class$;
};
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$CleanPipeline__
+#define __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$CleanPipeline__
+
+#pragma interface
+
+#include <java/lang/Thread.h>
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace javax
+ {
+ namespace sound
+ {
+ namespace sampled
+ {
+ namespace gstreamer
+ {
+ namespace lines
+ {
+ class GstPipeline;
+ class GstPipeline$CleanPipeline;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$CleanPipeline : public ::java::lang::Thread
+{
+
+ GstPipeline$CleanPipeline(::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline *);
+public:
+ virtual void run();
+public: // actually package-private
+ GstPipeline$CleanPipeline(::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline *, ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$CleanPipeline *);
+ ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline * __attribute__((aligned(__alignof__( ::java::lang::Thread)))) this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$CleanPipeline__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$State__
+#define __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$State__
+
+#pragma interface
+
+#include <java/lang/Enum.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace javax
+ {
+ namespace sound
+ {
+ namespace sampled
+ {
+ namespace gstreamer
+ {
+ namespace lines
+ {
+ class GstPipeline$State;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+class gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State : public ::java::lang::Enum
+{
+
+ GstPipeline$State(::java::lang::String *, jint);
+public:
+ static JArray< ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * > * values();
+ static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * valueOf(::java::lang::String *);
+ static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * PLAY;
+ static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * PAUSE;
+ static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * STOP;
+ static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * CLOSE;
+private:
+ static JArray< ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * > * ENUM$VALUES;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$State__
#pragma interface
#include <java/lang/Object.h>
+#include <gcj/array.h>
+
extern "Java"
{
namespace gnu
namespace lines
{
class GstPipeline;
+ class GstPipeline$State;
}
}
}
public:
GstPipeline();
+ GstPipeline(jint);
+ virtual void createForWrite();
+ virtual ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * getState();
+ virtual void close();
+ virtual void setState(::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State *);
+ virtual ::gnu::classpath::Pointer * getNativeClass();
+ virtual jint write(JArray< jbyte > *, jint, jint);
+ virtual jint read(JArray< jbyte > *, jint, jint);
+ virtual jint available();
+ virtual void drain();
+ virtual void flush();
+private:
+ void closePipe();
+ void prepareWrite();
+ static void init_id_cache();
+ static jboolean set_state(::gnu::classpath::Pointer *, jint);
+ static jint available(::gnu::classpath::Pointer *, jint);
+ static void open_native_pipe(::gnu::classpath::Pointer *, jint);
+ static void close_native_pipe(::gnu::classpath::Pointer *);
+ void init_instance();
+ jboolean create_named_pipe(::gnu::classpath::Pointer *);
+ jlong detect_pipe_size();
+public: // actually package-private
+ static ::gnu::classpath::Pointer * access$0(::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline *);
+ static void access$1(::gnu::classpath::Pointer *);
+ static JArray< jint > * $SWITCH_TABLE$gnu$javax$sound$sampled$gstreamer$lines$GstPipeline$State();
+private:
+ static const jint READ = 0;
+ static const jint WRITE = 1;
+ static const jint QUEUED = 1;
+ static ::java::lang::String * CAPACITY_KEY;
+ static JArray< ::java::lang::Object * > * lock;
+public: // actually protected
+ ::java::util::prefs::Preferences * __attribute__((aligned(__alignof__( ::java::lang::Object)))) prefs;
private:
- void setState();
- ::gnu::classpath::Pointer * __attribute__((aligned(__alignof__( ::java::lang::Object)))) pipeline;
+ jlong capacity;
+ ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * state;
+ ::java::lang::String * name;
+ ::java::io::FileOutputStream * output;
+ jboolean source;
+ jboolean ready;
+ ::gnu::classpath::Pointer * pipeline;
+ static JArray< jint > * $SWITCH_TABLE$gnu$javax$sound$sampled$gstreamer$lines$GstPipeline$State__;
public:
static ::java::lang::Class class$;
};
{
namespace lines
{
+ class GstPipeline;
class GstSourceDataLine;
}
}
public:
GstSourceDataLine(::javax::sound::sampled::AudioFormat *);
+ virtual void open();
virtual void open(::javax::sound::sampled::AudioFormat *);
virtual void open(::javax::sound::sampled::AudioFormat *, jint);
virtual jint write(JArray< jbyte > *, jint, jint);
virtual void start();
virtual void stop();
virtual void close();
+ virtual jboolean isRunning();
+private:
+ ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline * __attribute__((aligned(__alignof__( ::gnu::javax::sound::sampled::gstreamer::lines::GstDataLine)))) pipeline;
+ jboolean open__;
+public:
static ::java::lang::Class class$;
};
{
public: // actually protected
- AttributeImpl(::javax::xml::stream::Location *, ::javax::xml::namespace::QName *, ::java::lang::String *, ::javax::xml::namespace::QName *, jboolean);
+ AttributeImpl(::javax::xml::stream::Location *, ::javax::xml::namespace::QName *, ::java::lang::String *, ::java::lang::String *, jboolean);
public:
virtual jint getEventType();
virtual ::javax::xml::namespace::QName * getName();
virtual ::java::lang::String * getValue();
- virtual ::javax::xml::namespace::QName * getDTDType();
+ virtual ::java::lang::String * getDTDType();
virtual jboolean isSpecified();
virtual void writeAsEncodedUnicode(::java::io::Writer *);
public: // actually protected
::javax::xml::namespace::QName * __attribute__((aligned(__alignof__( ::gnu::xml::stream::XMLEventImpl)))) name;
::java::lang::String * value;
- ::javax::xml::namespace::QName * type;
+ ::java::lang::String * type;
jboolean specified;
public:
static ::java::lang::Class class$;
::java::util::LinkedList * endEntityStack;
jint state;
jint event;
- jboolean lookahead;
::java::util::LinkedList * stack;
::java::util::LinkedList * namespaces;
::java::util::LinkedList * bases;
Desktop();
public:
static ::java::awt::Desktop * getDesktop();
-private:
static jboolean isDesktopSupported();
-public:
virtual jboolean isSupported(::java::awt::Desktop$Action *);
virtual void browse(::java::net::URI *);
virtual void edit(::java::io::File *);
private:
static const jlong serialVersionUID = -4206021311591459213LL;
::gnu::java::awt::peer::ClasspathFontPeer * peer;
+ jint hashCode__;
public:
static ::java::lang::Class class$;
};
static ::java::util::WeakHashMap * instances;
::java::awt::Component * __attribute__((aligned(__alignof__( ::java::lang::Object)))) lastTarget;
::java::awt::Component * mouseEventTarget;
+public: // actually package-private
+ static jboolean $assertionsDisabled;
public:
static ::java::lang::Class class$;
};
class java::beans::beancontext::BeanContextServicesSupport$BCSSProxyServiceProvider : public ::java::lang::Object
{
- BeanContextServicesSupport$BCSSProxyServiceProvider(::java::beans::beancontext::BeanContextServicesSupport *, ::java::beans::beancontext::BeanContextServiceProvider *);
+public: // actually protected
+ BeanContextServicesSupport$BCSSProxyServiceProvider(::java::beans::beancontext::BeanContextServicesSupport *);
public:
virtual ::java::util::Iterator * getCurrentServiceSelectors(::java::beans::beancontext::BeanContextServices *, ::java::lang::Class *);
virtual ::java::lang::Object * getService(::java::beans::beancontext::BeanContextServices *, ::java::lang::Object *, ::java::lang::Class *, ::java::lang::Object *);
jint limit;
jint markPos;
static const jint DEFAULT_BUFFER_SIZE = 8192;
-private:
- ::java::lang::StringBuffer * sbuf;
public:
static ::java::lang::Class class$;
};
virtual jint readUnsignedShort();
virtual ::java::lang::String * readUTF();
static ::java::lang::String * readUTF(::java::io::DataInput *);
+public: // actually package-private
+ virtual ::java::lang::String * readUTFLong();
+private:
+ static ::java::lang::String * readUTF(::java::io::DataInput *, jint);
+public:
virtual jint skipBytes(jint);
public: // actually package-private
static jboolean convertToBoolean(jint);
virtual void writeDouble(jdouble);
virtual void writeBytes(::java::lang::String *);
virtual void writeChars(::java::lang::String *);
-private:
- jint getUTFlength(::java::lang::String *, jint, jint);
+public: // actually package-private
+ virtual jlong getUTFlength(::java::lang::String *, jint, jlong);
public:
virtual void writeUTF(::java::lang::String *);
+public: // actually package-private
+ virtual void writeUTFShort(::java::lang::String *, jint);
+ virtual void writeUTFLong(::java::lang::String *, jlong);
+private:
+ void writeUTFBytes(::java::lang::String *);
public: // actually protected
jint __attribute__((aligned(__alignof__( ::java::io::FilterOutputStream)))) written;
private:
public:
PipedInputStream();
+ PipedInputStream(jint);
PipedInputStream(::java::io::PipedOutputStream *);
+ PipedInputStream(::java::io::PipedOutputStream *, jint);
virtual void connect(::java::io::PipedOutputStream *);
public: // actually protected
virtual void receive(jint);
virtual void printStackTrace(::java::io::PrintWriter *);
private:
::java::lang::String * stackTraceString();
- static void stackTraceStringBuffer(::java::lang::StringBuffer *, ::java::lang::String *, JArray< ::java::lang::StackTraceElement * > *, jint);
+ static void stackTraceStringBuffer(::java::lang::StringBuilder *, ::java::lang::String *, JArray< ::java::lang::StackTraceElement * > *, jint);
public:
virtual ::java::lang::Throwable * fillInStackTrace();
virtual JArray< ::java::lang::StackTraceElement * > * getStackTrace();
class java::lang::management::ThreadInfo : public ::java::lang::Object
{
- ThreadInfo(::java::lang::Thread *, jlong, jlong, ::java::lang::Object *, ::java::lang::Thread *, jlong, jlong, jboolean, jboolean, JArray< ::java::lang::StackTraceElement * > *);
- ThreadInfo(::java::lang::Thread *, jlong, jlong, ::java::lang::Object *, ::java::lang::Thread *, jlong, jlong, jboolean, jboolean, JArray< ::java::lang::StackTraceElement * > *, JArray< ::java::lang::management::MonitorInfo * > *, JArray< ::java::lang::management::LockInfo * > *);
- ThreadInfo(jlong, ::java::lang::String *, ::java::lang::Thread$State *, jlong, jlong, ::java::lang::String *, jlong, ::java::lang::String *, jlong, jlong, jboolean, jboolean, JArray< ::java::lang::StackTraceElement * > *);
ThreadInfo(jlong, ::java::lang::String *, ::java::lang::Thread$State *, jlong, jlong, ::java::lang::String *, jlong, ::java::lang::String *, jlong, jlong, jboolean, jboolean, JArray< ::java::lang::StackTraceElement * > *, JArray< ::java::lang::management::MonitorInfo * > *, JArray< ::java::lang::management::LockInfo * > *);
public: // actually package-private
static void checkAttribute(::javax::management::openmbean::CompositeType *, ::java::lang::String *, ::javax::management::openmbean::OpenType *);
::java::net::URI * normalize();
private:
::java::lang::String * normalizePath(::java::lang::String *);
- void removeLastSegment(::java::lang::StringBuffer *);
+ void removeLastSegment(::java::lang::StringBuilder *);
public:
::java::net::URI * resolve(::java::net::URI *);
::java::net::URI * resolve(::java::lang::String *);
package java.security;
-import gnu.classpath.SystemProperties;
-import gnu.java.security.action.GetSecurityPropertyAction;
-
-import java.net.URL;
-
/**
* VM-specific methods for generating real (or almost real) random
* seeds. VM implementors should write a version of this class that
public: // actually package-private
CollationElementIterator(::java::text::RuleBasedCollator *, ::java::lang::String *);
+ CollationElementIterator(::java::text::RuleBasedCollator *, ::java::text::CharacterIterator *);
::java::text::RuleBasedCollator$CollationElement * nextBlock();
::java::text::RuleBasedCollator$CollationElement * previousBlock();
public:
static const jint NULLORDER = -1;
public: // actually package-private
::java::text::RuleBasedCollator * __attribute__((aligned(__alignof__( ::java::lang::Object)))) collator;
- ::java::lang::String * text;
+ ::java::text::CharacterIterator * text;
jint index;
jint textIndex;
private:
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __java_util_concurrent_CopyOnWriteArrayList$1__
+#define __java_util_concurrent_CopyOnWriteArrayList$1__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+
+class java::util::concurrent::CopyOnWriteArrayList$1 : public ::java::lang::Object
+{
+
+public: // actually package-private
+ CopyOnWriteArrayList$1(::java::util::concurrent::CopyOnWriteArrayList$SubList *, jint);
+public:
+ jboolean hasNext();
+ jboolean hasPrevious();
+ ::java::lang::Object * next();
+ ::java::lang::Object * previous();
+ jint nextIndex();
+ jint previousIndex();
+ void remove();
+ void set(::java::lang::Object *);
+ void add(::java::lang::Object *);
+private:
+ ::java::util::ListIterator * __attribute__((aligned(__alignof__( ::java::lang::Object)))) i;
+ jint position;
+public: // actually package-private
+ ::java::util::concurrent::CopyOnWriteArrayList$SubList * this$1;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __java_util_concurrent_CopyOnWriteArrayList$1__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __java_util_concurrent_CopyOnWriteArrayList$2__
+#define __java_util_concurrent_CopyOnWriteArrayList$2__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+
+class java::util::concurrent::CopyOnWriteArrayList$2 : public ::java::lang::Object
+{
+
+public: // actually package-private
+ CopyOnWriteArrayList$2(::java::util::concurrent::CopyOnWriteArrayList *);
+public:
+ jboolean hasNext();
+ ::java::lang::Object * next();
+ void remove();
+public: // actually package-private
+ JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) iteratorData;
+ jint currentElement;
+ ::java::util::concurrent::CopyOnWriteArrayList * this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __java_util_concurrent_CopyOnWriteArrayList$2__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __java_util_concurrent_CopyOnWriteArrayList$3__
+#define __java_util_concurrent_CopyOnWriteArrayList$3__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+
+class java::util::concurrent::CopyOnWriteArrayList$3 : public ::java::lang::Object
+{
+
+public: // actually package-private
+ CopyOnWriteArrayList$3(::java::util::concurrent::CopyOnWriteArrayList *, jint);
+public:
+ void add(::java::lang::Object *);
+ jboolean hasNext();
+ jboolean hasPrevious();
+ ::java::lang::Object * next();
+ jint nextIndex();
+ ::java::lang::Object * previous();
+ jint previousIndex();
+ void remove();
+ void set(::java::lang::Object *);
+public: // actually package-private
+ JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) iteratorData;
+ jint currentElement;
+ ::java::util::concurrent::CopyOnWriteArrayList * this$0;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __java_util_concurrent_CopyOnWriteArrayList$3__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __java_util_concurrent_CopyOnWriteArrayList$RandomAccessSubList__
+#define __java_util_concurrent_CopyOnWriteArrayList$RandomAccessSubList__
+
+#pragma interface
+
+#include <java/util/concurrent/CopyOnWriteArrayList$SubList.h>
+
+class java::util::concurrent::CopyOnWriteArrayList$RandomAccessSubList : public ::java::util::concurrent::CopyOnWriteArrayList$SubList
+{
+
+public: // actually package-private
+ CopyOnWriteArrayList$RandomAccessSubList(::java::util::concurrent::CopyOnWriteArrayList *, jint, jint);
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __java_util_concurrent_CopyOnWriteArrayList$RandomAccessSubList__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __java_util_concurrent_CopyOnWriteArrayList$SubList__
+#define __java_util_concurrent_CopyOnWriteArrayList$SubList__
+
+#pragma interface
+
+#include <java/util/AbstractList.h>
+#include <gcj/array.h>
+
+
+class java::util::concurrent::CopyOnWriteArrayList$SubList : public ::java::util::AbstractList
+{
+
+public: // actually package-private
+ CopyOnWriteArrayList$SubList(::java::util::concurrent::CopyOnWriteArrayList *, jint, jint);
+ virtual void checkMod();
+private:
+ void checkBoundsInclusive(jint);
+ void checkBoundsExclusive(jint);
+public:
+ virtual jint size();
+ virtual void clear();
+ virtual ::java::lang::Object * set(jint, ::java::lang::Object *);
+ virtual ::java::lang::Object * get(jint);
+ virtual void add(jint, ::java::lang::Object *);
+ virtual ::java::lang::Object * remove(jint);
+ virtual jboolean addAll(jint, ::java::util::Collection *);
+ virtual jboolean addAll(::java::util::Collection *);
+ virtual ::java::util::Iterator * iterator();
+ virtual ::java::util::ListIterator * listIterator(jint);
+public: // actually package-private
+ ::java::util::concurrent::CopyOnWriteArrayList * __attribute__((aligned(__alignof__( ::java::util::AbstractList)))) backingList;
+ jint offset;
+ jint size__;
+ JArray< ::java::lang::Object * > * data;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __java_util_concurrent_CopyOnWriteArrayList$SubList__
#pragma interface
-#include <java/util/AbstractList.h>
+#include <java/lang/Object.h>
#include <gcj/array.h>
-class java::util::concurrent::CopyOnWriteArrayList : public ::java::util::AbstractList
+class java::util::concurrent::CopyOnWriteArrayList : public ::java::lang::Object
{
public:
virtual jint size();
virtual jboolean isEmpty();
virtual jboolean contains(::java::lang::Object *);
+ virtual jboolean containsAll(::java::util::Collection *);
virtual jint indexOf(::java::lang::Object *);
virtual jint indexOf(::java::lang::Object *, jint);
virtual jint lastIndexOf(::java::lang::Object *);
virtual jboolean add(::java::lang::Object *);
virtual void add(jint, ::java::lang::Object *);
virtual ::java::lang::Object * remove(jint);
+ virtual jboolean remove(::java::lang::Object *);
+ virtual jboolean removeAll(::java::util::Collection *);
+ virtual jboolean retainAll(::java::util::Collection *);
virtual void clear();
virtual jboolean addAll(::java::util::Collection *);
virtual jboolean addAll(jint, ::java::util::Collection *);
virtual jboolean addIfAbsent(::java::lang::Object *);
virtual jint addAllAbsent(::java::util::Collection *);
+ virtual ::java::lang::String * toString();
+ virtual jboolean equals(::java::lang::Object *);
+ virtual jint hashCode();
+ virtual ::java::util::Iterator * iterator();
+ virtual ::java::util::ListIterator * listIterator();
+ virtual ::java::util::ListIterator * listIterator(jint);
+ virtual ::java::util::List * subList(jint, jint);
private:
void writeObject(::java::io::ObjectOutputStream *);
void readObject(::java::io::ObjectInputStream *);
public: // actually package-private
static jboolean equals(::java::lang::Object *, ::java::lang::Object *);
virtual JArray< ::java::lang::Object * > * getArray();
+ static JArray< ::java::lang::Object * > * access$0(::java::util::concurrent::CopyOnWriteArrayList *);
+ static void access$1(::java::util::concurrent::CopyOnWriteArrayList *, JArray< ::java::lang::Object * > *);
private:
- JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::util::AbstractList)))) data;
+ static const jlong serialVersionUID = 8673264195747942595LL;
+ JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) data;
public:
static ::java::lang::Class class$;
};
static ::java::lang::String * DECREMENT;
static ::java::lang::String * INCREMENT;
static ::java::lang::String * TOGGLE_EXPAND;
+ static ::java::lang::String * CLICK;
+ static ::java::lang::String * TOGGLE_POPUP;
static ::java::lang::Class class$;
} __attribute__ ((java_interface));
{
public:
- AccessibleAttributeSequence();
+ AccessibleAttributeSequence(jint, jint, ::javax::swing::text::AttributeSet *);
::javax::swing::text::AttributeSet * __attribute__((aligned(__alignof__( ::java::lang::Object)))) attributes;
jint startIndex;
jint endIndex;
static ::javax::accessibility::AccessibleRole * PARAGRAPH;
static ::javax::accessibility::AccessibleRole * PROGRESS_MONITOR;
static ::javax::accessibility::AccessibleRole * RULER;
+ static ::javax::accessibility::AccessibleRole * HTML_CONTAINER;
static ::java::lang::Class class$;
};
{
public:
- AccessibleTextSequence();
+ AccessibleTextSequence(jint, jint, ::java::lang::String *);
::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) text;
jint startIndex;
jint endIndex;
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_management_remote_NotificationResult__
+#define __javax_management_remote_NotificationResult__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace javax
+ {
+ namespace management
+ {
+ namespace remote
+ {
+ class NotificationResult;
+ class TargetedNotification;
+ }
+ }
+ }
+}
+
+class javax::management::remote::NotificationResult : public ::java::lang::Object
+{
+
+public:
+ NotificationResult(jlong, jlong, JArray< ::javax::management::remote::TargetedNotification * > *);
+ virtual jlong getEarliestSequenceNumber();
+ virtual jlong getNextSequenceNumber();
+ virtual JArray< ::javax::management::remote::TargetedNotification * > * getTargetedNotifications();
+ virtual ::java::lang::String * toString();
+private:
+ static const jlong serialVersionUID = 1191800228721395279LL;
+ jlong __attribute__((aligned(__alignof__( ::java::lang::Object)))) earliestSequenceNumber;
+ jlong nextSequenceNumber;
+ JArray< ::javax::management::remote::TargetedNotification * > * targetedNotifications;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __javax_management_remote_NotificationResult__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_management_remote_TargetedNotification__
+#define __javax_management_remote_TargetedNotification__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace javax
+ {
+ namespace management
+ {
+ class Notification;
+ namespace remote
+ {
+ class TargetedNotification;
+ }
+ }
+ }
+}
+
+class javax::management::remote::TargetedNotification : public ::java::lang::Object
+{
+
+public:
+ TargetedNotification(::javax::management::Notification *, ::java::lang::Integer *);
+ virtual ::javax::management::Notification * getNotification();
+ virtual ::java::lang::Integer * getListenerID();
+ virtual ::java::lang::String * toString();
+private:
+ static const jlong serialVersionUID = 7676132089779300926LL;
+ ::javax::management::Notification * __attribute__((aligned(__alignof__( ::java::lang::Object)))) notif;
+ ::java::lang::Integer * id;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __javax_management_remote_TargetedNotification__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_management_remote_rmi_RMIConnection__
+#define __javax_management_remote_rmi_RMIConnection__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace java
+ {
+ namespace rmi
+ {
+ class MarshalledObject;
+ }
+ }
+ namespace javax
+ {
+ namespace management
+ {
+ class AttributeList;
+ class MBeanInfo;
+ class ObjectInstance;
+ class ObjectName;
+ namespace remote
+ {
+ class NotificationResult;
+ namespace rmi
+ {
+ class RMIConnection;
+ }
+ }
+ }
+ namespace security
+ {
+ namespace auth
+ {
+ class Subject;
+ }
+ }
+ }
+}
+
+class javax::management::remote::rmi::RMIConnection : public ::java::lang::Object
+{
+
+public:
+ virtual void addNotificationListener(::javax::management::ObjectName *, ::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, ::java::rmi::MarshalledObject *, ::javax::security::auth::Subject *) = 0;
+ virtual JArray< ::java::lang::Integer * > * addNotificationListeners(JArray< ::javax::management::ObjectName * > *, JArray< ::java::rmi::MarshalledObject * > *, JArray< ::javax::security::auth::Subject * > *) = 0;
+ virtual void close() = 0;
+ virtual ::javax::management::ObjectInstance * createMBean(::java::lang::String *, ::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, JArray< ::java::lang::String * > *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::ObjectInstance * createMBean(::java::lang::String *, ::javax::management::ObjectName *, ::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, JArray< ::java::lang::String * > *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::ObjectInstance * createMBean(::java::lang::String *, ::javax::management::ObjectName *, ::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::ObjectInstance * createMBean(::java::lang::String *, ::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::remote::NotificationResult * fetchNotifications(jlong, jint, jlong) = 0;
+ virtual ::java::lang::Object * getAttribute(::javax::management::ObjectName *, ::java::lang::String *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::AttributeList * getAttributes(::javax::management::ObjectName *, JArray< ::java::lang::String * > *, ::javax::security::auth::Subject *) = 0;
+ virtual ::java::lang::String * getConnectionId() = 0;
+ virtual ::java::lang::String * getDefaultDomain(::javax::security::auth::Subject *) = 0;
+ virtual JArray< ::java::lang::String * > * getDomains(::javax::security::auth::Subject *) = 0;
+ virtual ::java::lang::Integer * getMBeanCount(::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::MBeanInfo * getMBeanInfo(::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::ObjectInstance * getObjectInstance(::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ virtual ::java::lang::Object * invoke(::javax::management::ObjectName *, ::java::lang::String *, ::java::rmi::MarshalledObject *, JArray< ::java::lang::String * > *, ::javax::security::auth::Subject *) = 0;
+ virtual jboolean isInstanceOf(::javax::management::ObjectName *, ::java::lang::String *, ::javax::security::auth::Subject *) = 0;
+ virtual jboolean isRegistered(::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ virtual ::java::util::Set * queryMBeans(::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, ::javax::security::auth::Subject *) = 0;
+ virtual ::java::util::Set * queryNames(::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, ::javax::security::auth::Subject *) = 0;
+ virtual void removeNotificationListener(::javax::management::ObjectName *, ::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, ::java::rmi::MarshalledObject *, ::javax::security::auth::Subject *) = 0;
+ virtual void removeNotificationListener(::javax::management::ObjectName *, ::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ virtual void removeNotificationListeners(::javax::management::ObjectName *, JArray< ::java::lang::Integer * > *, ::javax::security::auth::Subject *) = 0;
+ virtual void setAttribute(::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, ::javax::security::auth::Subject *) = 0;
+ virtual ::javax::management::AttributeList * setAttributes(::javax::management::ObjectName *, ::java::rmi::MarshalledObject *, ::javax::security::auth::Subject *) = 0;
+ virtual void unregisterMBean(::javax::management::ObjectName *, ::javax::security::auth::Subject *) = 0;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __javax_management_remote_rmi_RMIConnection__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_management_remote_rmi_RMIServer__
+#define __javax_management_remote_rmi_RMIServer__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace javax
+ {
+ namespace management
+ {
+ namespace remote
+ {
+ namespace rmi
+ {
+ class RMIConnection;
+ class RMIServer;
+ }
+ }
+ }
+ }
+}
+
+class javax::management::remote::rmi::RMIServer : public ::java::lang::Object
+{
+
+public:
+ virtual ::java::lang::String * getVersion() = 0;
+ virtual ::javax::management::remote::rmi::RMIConnection * newClient(::java::lang::Object *) = 0;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __javax_management_remote_rmi_RMIServer__
::javax::swing::event::TreeExpansionListener * treeExpansionListener;
::javax::swing::event::TreeModelListener * treeModelListener;
static ::javax::swing::Icon * nullIcon;
- static ::java::awt::event::MouseEvent * EDIT;
public:
static ::java::lang::Class class$;
};
DefaultMutableTreeNode$BreadthFirstEnumeration(::javax::swing::tree::TreeNode *);
public:
virtual jboolean hasMoreElements();
+ virtual ::javax::swing::tree::TreeNode * DefaultMutableTreeNode$BreadthFirstEnumeration$nextElement();
virtual ::java::lang::Object * nextElement();
public: // actually package-private
::java::util::LinkedList * __attribute__((aligned(__alignof__( ::java::lang::Object)))) queue;
DefaultMutableTreeNode$PostorderEnumeration(::javax::swing::tree::TreeNode *);
public:
virtual jboolean hasMoreElements();
- virtual ::java::lang::Object * nextElement();
+ virtual ::javax::swing::tree::TreeNode * DefaultMutableTreeNode$PostorderEnumeration$nextElement();
private:
- ::java::lang::Object * traverse(::java::util::Enumeration *);
+ ::javax::swing::tree::TreeNode * traverse(::java::util::Enumeration *);
+public:
+ virtual ::java::lang::Object * nextElement();
public: // actually package-private
::java::util::Stack * __attribute__((aligned(__alignof__( ::java::lang::Object)))) nodes;
::java::util::Stack * childrenEnums;
DefaultMutableTreeNode$PreorderEnumeration(::javax::swing::tree::TreeNode *);
public:
virtual jboolean hasMoreElements();
- virtual ::java::lang::Object * nextElement();
+ virtual ::javax::swing::tree::TreeNode * DefaultMutableTreeNode$PreorderEnumeration$nextElement();
private:
::javax::swing::tree::TreeNode * traverse(::java::util::Enumeration *);
+public:
+ virtual ::java::lang::Object * nextElement();
public: // actually package-private
::javax::swing::tree::TreeNode * __attribute__((aligned(__alignof__( ::java::lang::Object)))) next;
::java::util::Stack * childrenEnums;
DefaultTreeCellEditor(::javax::swing::JTree *, ::javax::swing::tree::DefaultTreeCellRenderer *);
DefaultTreeCellEditor(::javax::swing::JTree *, ::javax::swing::tree::DefaultTreeCellRenderer *, ::javax::swing::tree::TreeCellEditor *);
private:
- void configureEditingComponent(::javax::swing::JTree *, ::javax::swing::tree::DefaultTreeCellRenderer *, ::javax::swing::tree::TreeCellEditor *);
void writeObject(::java::io::ObjectOutputStream *);
void readObject(::java::io::ObjectInputStream *);
public:
::java::awt::Color * borderSelectionColor;
::javax::swing::Icon * editingIcon;
::java::awt::Font * font;
-private:
- ::javax::swing::tree::TreePath * tPath;
public:
static ::java::lang::Class class$;
};
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_tools_Diagnostic$Kind__
+#define __javax_tools_Diagnostic$Kind__
+
+#pragma interface
+
+#include <java/lang/Enum.h>
+#include <gcj/array.h>
+
+extern "Java"
+{
+ namespace javax
+ {
+ namespace tools
+ {
+ class Diagnostic$Kind;
+ }
+ }
+}
+
+class javax::tools::Diagnostic$Kind : public ::java::lang::Enum
+{
+
+ Diagnostic$Kind(::java::lang::String *, jint);
+public:
+ static JArray< ::javax::tools::Diagnostic$Kind * > * values();
+ static ::javax::tools::Diagnostic$Kind * valueOf(::java::lang::String *);
+ static ::javax::tools::Diagnostic$Kind * ERROR;
+ static ::javax::tools::Diagnostic$Kind * WARNING;
+ static ::javax::tools::Diagnostic$Kind * MANDATORY_WARNING;
+ static ::javax::tools::Diagnostic$Kind * NOTE;
+ static ::javax::tools::Diagnostic$Kind * OTHER;
+private:
+ static JArray< ::javax::tools::Diagnostic$Kind * > * ENUM$VALUES;
+public:
+ static ::java::lang::Class class$;
+};
+
+#endif // __javax_tools_Diagnostic$Kind__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_tools_Diagnostic__
+#define __javax_tools_Diagnostic__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace javax
+ {
+ namespace tools
+ {
+ class Diagnostic;
+ class Diagnostic$Kind;
+ }
+ }
+}
+
+class javax::tools::Diagnostic : public ::java::lang::Object
+{
+
+public:
+ virtual ::javax::tools::Diagnostic$Kind * getKind() = 0;
+ virtual ::java::lang::Object * getSource() = 0;
+ virtual jlong getPosition() = 0;
+ virtual jlong getStartPosition() = 0;
+ virtual jlong getEndPosition() = 0;
+ virtual jlong getLineNumber() = 0;
+ virtual jlong getColumnNumber() = 0;
+ virtual ::java::lang::String * getCode() = 0;
+ virtual ::java::lang::String * getMessage(::java::util::Locale *) = 0;
+ static const jlong NOPOS = -1LL;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __javax_tools_Diagnostic__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_tools_DiagnosticListener__
+#define __javax_tools_DiagnosticListener__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace javax
+ {
+ namespace tools
+ {
+ class Diagnostic;
+ class DiagnosticListener;
+ }
+ }
+}
+
+class javax::tools::DiagnosticListener : public ::java::lang::Object
+{
+
+public:
+ virtual void report(::javax::tools::Diagnostic *) = 0;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __javax_tools_DiagnosticListener__
--- /dev/null
+
+// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
+
+#ifndef __javax_tools_FileObject__
+#define __javax_tools_FileObject__
+
+#pragma interface
+
+#include <java/lang/Object.h>
+extern "Java"
+{
+ namespace java
+ {
+ namespace net
+ {
+ class URI;
+ }
+ }
+ namespace javax
+ {
+ namespace tools
+ {
+ class FileObject;
+ }
+ }
+}
+
+class javax::tools::FileObject : public ::java::lang::Object
+{
+
+public:
+ virtual ::java::net::URI * toURI() = 0;
+ virtual ::java::lang::String * getName() = 0;
+ virtual ::java::io::InputStream * openInputStream() = 0;
+ virtual ::java::io::OutputStream * openOutputStream() = 0;
+ virtual ::java::io::Reader * openReader() = 0;
+ virtual ::java::lang::CharSequence * getCharContent(jboolean) = 0;
+ virtual ::java::io::Writer * openWriter() = 0;
+ virtual jlong getLastModified() = 0;
+ virtual jboolean delete$() = 0;
+ static ::java::lang::Class class$;
+} __attribute__ ((java_interface));
+
+#endif // __javax_tools_FileObject__
public:
virtual ::javax::xml::namespace::QName * getName() = 0;
virtual ::java::lang::String * getValue() = 0;
- virtual ::javax::xml::namespace::QName * getDTDType() = 0;
+ virtual ::java::lang::String * getDTDType() = 0;
virtual jboolean isSpecified() = 0;
virtual jint getEventType() = 0;
virtual ::javax::xml::stream::Location * getLocation() = 0;
return tmp->capacity();
}
+static jobjectRefType JNICALL
+_Jv_JNI_GetObjectRefType (JNIEnv *, jobject object)
+{
+ JvFail("GetObjectRefType not implemented");
+ return JNIInvalidRefType;
+}
+
\f
struct NativeMethodCacheEntry : public JNINativeMethod
_Jv_JNI_NewDirectByteBuffer, // NewDirectByteBuffer
_Jv_JNI_GetDirectBufferAddress, // GetDirectBufferAddress
- _Jv_JNI_GetDirectBufferCapacity // GetDirectBufferCapacity
+ _Jv_JNI_GetDirectBufferCapacity, // GetDirectBufferCapacity
+
+ _Jv_JNI_GetObjectRefType // GetObjectRefType
};
struct JNIInvokeInterface_ _Jv_JNI_InvokeFunctions =
-include gnu/classpath/jdwp/value.deps
+gnu_classpath_toolkit_source_files = \
+classpath/gnu/classpath/toolkit/DefaultDaemonThreadFactory.java
+
+gnu_classpath_toolkit_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_toolkit_source_files)))
+
+gnu/classpath/toolkit.list: $(gnu_classpath_toolkit_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/gnu/classpath/toolkit/*.class > gnu/classpath/toolkit.list
+
+-include gnu/classpath/toolkit.deps
+
+
gnu_gcj_source_files = \
gnu/gcj/Core.java \
gnu/gcj/RawData.java \
gnu_java_awt_font_source_files = \
classpath/gnu/java/awt/font/FontDelegate.java \
classpath/gnu/java/awt/font/FontFactory.java \
-classpath/gnu/java/awt/font/GNUGlyphVector.java
+classpath/gnu/java/awt/font/GNUGlyphVector.java \
+classpath/gnu/java/awt/font/OpenTypeFontPeer.java
gnu_java_awt_font_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_font_source_files)))
gnu_java_awt_image_source_files = \
+classpath/gnu/java/awt/image/AsyncImage.java \
+classpath/gnu/java/awt/image/ImageConverter.java \
classpath/gnu/java/awt/image/ImageDecoder.java \
classpath/gnu/java/awt/image/XBMDecoder.java
classpath/gnu/java/awt/java2d/CubicSegment.java \
classpath/gnu/java/awt/java2d/ImagePaint.java \
classpath/gnu/java/awt/java2d/LineSegment.java \
+classpath/gnu/java/awt/java2d/PixelCoverage.java \
classpath/gnu/java/awt/java2d/Pixelizer.java \
classpath/gnu/java/awt/java2d/PolyEdge.java \
classpath/gnu/java/awt/java2d/PolyEdgeComparator.java \
classpath/gnu/java/awt/java2d/ScanlineCoverage.java \
classpath/gnu/java/awt/java2d/Segment.java \
classpath/gnu/java/awt/java2d/ShapeCache.java \
+classpath/gnu/java/awt/java2d/ShapeWrapper.java \
+classpath/gnu/java/awt/java2d/TextCacheKey.java \
classpath/gnu/java/awt/java2d/TexturePaintContext.java
gnu_java_awt_java2d_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_java2d_source_files)))
gnu_java_awt_peer_x_source_files = \
classpath/gnu/java/awt/peer/x/GLGraphics.java \
-classpath/gnu/java/awt/peer/x/ImageConverter.java \
classpath/gnu/java/awt/peer/x/KeyboardMapping.java \
classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java \
classpath/gnu/java/awt/peer/x/XDialogPeer.java \
classpath/gnu/java/awt/peer/x/XEventPump.java \
-classpath/gnu/java/awt/peer/x/XFontPeer2.java \
+classpath/gnu/java/awt/peer/x/XFontPeer.java \
classpath/gnu/java/awt/peer/x/XFramePeer.java \
classpath/gnu/java/awt/peer/x/XGraphics2D.java \
classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java \
gnu_java_nio_charset_source_files = \
classpath/gnu/java/nio/charset/ByteCharset.java \
+classpath/gnu/java/nio/charset/ByteDecodeLoopHelper.java \
+classpath/gnu/java/nio/charset/ByteEncodeLoopHelper.java \
classpath/gnu/java/nio/charset/Cp424.java \
classpath/gnu/java/nio/charset/Cp437.java \
classpath/gnu/java/nio/charset/Cp737.java \
classpath/gnu/java/util/Base64.java \
classpath/gnu/java/util/DoubleEnumeration.java \
classpath/gnu/java/util/EmptyEnumeration.java \
+classpath/gnu/java/util/LRUCache.java \
classpath/gnu/java/util/WeakIdentityHashMap.java \
classpath/gnu/java/util/ZoneInfo.java
-include javax/management/openmbean.deps
+javax_management_remote_source_files = \
+classpath/javax/management/remote/NotificationResult.java \
+classpath/javax/management/remote/TargetedNotification.java
+
+javax_management_remote_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_remote_source_files)))
+
+javax/management/remote.list: $(javax_management_remote_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/javax/management/remote/*.class > javax/management/remote.list
+
+-include javax/management/remote.deps
+
+
+javax_management_remote_rmi_source_files = \
+classpath/javax/management/remote/rmi/RMIConnection.java \
+classpath/javax/management/remote/rmi/RMIServer.java
+
+javax_management_remote_rmi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_remote_rmi_source_files)))
+
+javax/management/remote/rmi.list: $(javax_management_remote_rmi_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/javax/management/remote/rmi/*.class > javax/management/remote/rmi.list
+
+-include javax/management/remote/rmi.deps
+
+
javax_naming_source_files = \
classpath/javax/naming/AuthenticationException.java \
classpath/javax/naming/AuthenticationNotSupportedException.java \
-include javax/swing/undo.deps
+javax_tools_source_files = \
+classpath/javax/tools/Diagnostic.java \
+classpath/javax/tools/DiagnosticListener.java \
+classpath/javax/tools/FileObject.java
+
+javax_tools_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_tools_source_files)))
+
+javax/tools.list: $(javax_tools_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/javax/tools/*.class > javax/tools.list
+
+-include javax/tools.deps
+
+
javax_transaction_source_files = \
classpath/javax/transaction/HeuristicCommitException.java \
classpath/javax/transaction/HeuristicMixedException.java \
gnu/awt/j2d.list \
gnu/classpath.list \
gnu/classpath/debug.list \
+ gnu/classpath/toolkit.list \
gnu/gcj.list \
gnu/gcj/convert.list \
gnu/gcj/io.list \
javax/management.list \
javax/management/loading.list \
javax/management/openmbean.list \
+ javax/management/remote.list \
+ javax/management/remote/rmi.list \
javax/naming.list \
javax/naming/directory.list \
javax/naming/event.list \
javax/swing/text/rtf.list \
javax/swing/tree.list \
javax/swing/undo.list \
+ javax/tools.list \
javax/transaction.list \
javax/transaction/xa.list \
org/ietf/jgss.list \
$(gnu_awt_j2d_header_files) \
$(gnu_classpath_header_files) \
$(gnu_classpath_debug_header_files) \
+ $(gnu_classpath_toolkit_header_files) \
$(gnu_gcj_header_files) \
$(gnu_gcj_convert_header_files) \
$(gnu_gcj_io_header_files) \
$(javax_management_header_files) \
$(javax_management_loading_header_files) \
$(javax_management_openmbean_header_files) \
+ $(javax_management_remote_header_files) \
+ $(javax_management_remote_rmi_header_files) \
$(javax_naming_header_files) \
$(javax_naming_directory_header_files) \
$(javax_naming_event_header_files) \
$(javax_swing_text_rtf_header_files) \
$(javax_swing_tree_header_files) \
$(javax_swing_undo_header_files) \
+ $(javax_tools_header_files) \
$(javax_transaction_header_files) \
$(javax_transaction_xa_header_files) \
$(org_ietf_jgss_header_files) \
org-xml.lo
property_files = \
- classpath/resource/gnu/classpath/tools/appletviewer/messages.properties \
- classpath/resource/gnu/classpath/tools/common/Messages.properties \
- classpath/resource/gnu/classpath/tools/getopt/Messages.properties \
- classpath/resource/gnu/classpath/tools/jar/messages.properties \
- classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties \
- classpath/resource/gnu/classpath/tools/jarsigner/messages.properties \
- classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties \
- classpath/resource/gnu/classpath/tools/keytool/messages.properties \
- classpath/resource/gnu/classpath/tools/native2ascii/messages.properties \
- classpath/resource/gnu/classpath/tools/orbd/messages.properties \
- classpath/resource/gnu/classpath/tools/rmic/messages.properties \
- classpath/resource/gnu/classpath/tools/rmid/messages.properties \
- classpath/resource/gnu/classpath/tools/rmiregistry/messages.properties \
- classpath/resource/gnu/classpath/tools/serialver/messages.properties \
- classpath/resource/gnu/classpath/tools/tnameserv/messages.properties \
+ classpath/resource/gnu/java/awt/font/fonts.properties \
classpath/resource/gnu/java/awt/peer/gtk/font.properties \
classpath/resource/gnu/java/awt/peer/x/fonts.properties \
+ classpath/resource/gnu/java/awt/peer/x/xfonts.properties \
classpath/resource/gnu/java/locale/LocaleInformation.properties \
classpath/resource/gnu/java/locale/LocaleInformation_aa.properties \
classpath/resource/gnu/java/locale/LocaleInformation_aa_DJ.properties \
classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties \
classpath/resource/javax/swing/text/html/default.css \
classpath/resource/org/ietf/jgss/MessagesBundle.properties \
- classpath/resource/sun/rmi/rmic/messages.properties \
- classpath/resource/com/sun/tools/javac/messages.properties \
classpath/resource/META-INF/services/java.util.prefs.PreferencesFactory \
classpath/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \
classpath/resource/META-INF/services/javax.sound.midi.spi.MidiDeviceProvider \