Commit Graph

4689 Commits

Author SHA1 Message Date
Keith Seitz
f031b5d726 natVMVirtualMachine.cc (DEFINE_CALLBACK): New macro.
* gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK):
        New macro.
        (ENABLE_EVENT): New macro.
        (initialize): Define and enable JVMTI VM_INIT callback.
        (jdwpVMInitCB): New function.

From-SVN: r120833
2007-01-16 19:54:16 +00:00
Kyle Galloway
05794ce850 jvmti.cc (_Jv_JVMTI_GetAllThreads): 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.

From-SVN: r120827
2007-01-16 15:06:28 +00:00
Keith Seitz
e9d59899de natVMVirtualMachine.cc (suspendThread): Use java.lang.StringBuilder instead of java.lang.StringBuffer.
* gnu/classpath/jdwp/natVMVirtualMachine.cc (suspendThread): Use
        java.lang.StringBuilder instead of java.lang.StringBuffer.
        (resumeThread): Likewise.

From-SVN: r120805
2007-01-15 23:38:35 +00:00
Gary Benson
0122c9e791 MappedByteBuffer.java: Removed.
2007-01-15  Gary Benson  <gbenson@redhat.com>

	* java/nio/MappedByteBuffer.java: Removed.
	* sources.am, Makefile.in: Rebuilt.

From-SVN: r120793
2007-01-15 12:45:35 +00:00
Gary Benson
a5c0f6fe87 URLClassLoader.java: Removed.
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.

From-SVN: r120791
2007-01-15 10:25:38 +00:00
H.J. Lu
76b972d63c ld-symbolic.m4: New.
config/

2007-01-14  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-symbolic.m4: New.

libjava/

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.

From-SVN: r120773
2007-01-14 07:38:18 -08:00
Kaz Kojima
228e6ac245 locks.h (read_barrier): New.
* sysdep/sh/locks.h (read_barrier): New.
	(write_barrier): Likewise.

From-SVN: r120735
2007-01-12 22:27:49 +00:00
Andrew Haley
f005dd79c5 i386-signal.h: Rewrite to use rt_sigaction.
2007-01-12  Andrew Haley  <aph@redhat.com>

        * include/i386-signal.h: Rewrite to use rt_sigaction.

From-SVN: r120721
2007-01-12 12:30:56 +00:00
Andrew Haley
9d5b51ff57 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.

From-SVN: r120672
2007-01-11 13:54:49 +00:00
Tom Tromey
a6ec93973c *.h: New files.
* 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.

From-SVN: r120655
2007-01-11 00:15:27 +00:00
Matthias Klose
eee96b1bb0 Readd missing chunks from r116332:
2007-01-10  Matthias Klose  <doko@debian.org> 
 
        Readd missing chunks from r116332: 
 
        * m4/acinclude.m4 (CLASSPATH_TOOLEXECLIBDIR): New macro. 
        * resource/Makefile.am (loggingdir): Define to 
        toolexeclibdir. 
        (securitydir): Likewise. 
        * configure.ac: Call CLASSPATH_TOOLEXECLIBDIR. 
        Set default nativeexeclibdir using toolexeclibdir. 
 
        Readd missing chunks from r115839: 
 
        * native/jni/gtk-peer/Makefile.am (libgtkpeer_la_LDFLAGS): 
        Add -avoid-version. 
        * native/jawt/Makefile.am (libjawt_la_LDFLAGS): Add -avoid-version. 
 
        * configure, Makefile.in, doc/Makefile.in, doc/api/Makefile.in, 
        examples/Makefile.in, external/Makefile.in, 
        external/jsr166/Makefile.in, external/relaxngDatatype/Makefile.in, 
        external/sax/Makefile.in, external/w3c_dom/Makefile.in, 
        include/Makefile.in, lib/Makefile.in, native/Makefile.in, 
        native/fdlibm/Makefile.in, native/jawt/Makefile.in, 
        native/jni/Makefile.in, native/jni/classpath/Makefile.in, 
        native/jni/gconf-peer/Makefile.in, native/jni/gtk-peer/Makefile.in 
        native/jni/java-io/Makefile.in, native/jni/java-lang/Makefile.in, 
        native/jni/java-net/Makefile.in, native/jni/java-nio/Makefile.in, 
        native/jni/java-util/Makefile.in, native/jni/midi-alsa/Makefile.in, 
        native/jni/midi-dssi/Makefile.in, native/jni/native-lib/Makefile.in, 
        native/jni/qt-peer/Makefile.in, native/jni/xmlj/Makefile.in, 
        native/plugin/Makefile.in, resource/Makefile.in, scripts/Makefile.in, 
        tools/Makefile.in: Regenerate

From-SVN: r120654
2007-01-11 00:01:27 +00:00
Tom Tromey
10f1f9f70c * HACKING: Various updates.
From-SVN: r120653
2007-01-10 23:44:46 +00:00
Tom Tromey
ea517ca550 natDouble.cc (toString): Added parens.
* java/lang/natDouble.cc (toString): Added parens.
	* gnu/gcj/io/shs.h (PROTO): Define.
	* link.cc (resolve_pool_entry): Added missing braces.

From-SVN: r120652
2007-01-10 22:56:20 +00:00
H.J. Lu
e0ae13896e re PR libgcj/30424 (revision 120632 failed to build on ia64)
2007-01-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR libgcj/30424
	* sysdep/ia64/locks.h (read_barrier): New.
	(write_barrier): New.

From-SVN: r120645
2007-01-10 09:50:40 -08:00
Gary Benson
143f796e57 URL.java: Removed.
2007-01-10  Gary Benson  <gbenson@redhat.com>

	* java/net/URL.java: Removed.
	* sources.am, Makefile.in: Rebuilt.

From-SVN: r120644
2007-01-10 16:55:10 +00:00
Matthias Klose
2326ba44e4 regexp, [...]: Remove empty directories.
2007-01-10  Matthias Klose  <doko@debian.org>

	* resource/gnu/regexp, tools/gnu/classpath/tools/rmi/rmic,
	tools/gnu/classpath/tools/rmi/rmid, tools/gnu/classpath/tools/giop,
	doc/www.gnu.org, doc/unicode, testsuite, testsuite/java.sun.awt,
	testsuite/javax.swing.text.html.parser, testsuite/java.lang,
	testsuite/java.opstack, testsuite/java.sun.tools, testsuite/java.text,
	testsuite/scheme, testsuite/config, testsuite/java.net, testsuite/lib,
	testsuite/java.io, testsuite/java.util, native/target,
	native/testsuite, native/vmi, org/omg/CORBA/SendingContext,
	gnu/regexp, test, compat: Remove empty directories.

From-SVN: r120643
2007-01-10 16:39:47 +00:00
Matthias Klose
02b8fc06c7 Makefile.am (install-exec-hook): Support $(DESTDIR).
2007-01-10  Matthias Klose  <doko@debian.org> 
 
        * Makefile.am (install-exec-hook): Support $(DESTDIR). 
        * Makefile.in: Regenerated.

From-SVN: r120639
2007-01-10 14:31:06 +00:00
Tom Tromey
97b8365caf Merged gcj-eclipse branch to trunk.
From-SVN: r120621
2007-01-09 19:58:05 +00:00
Adam Megacz
54076f8b44 configure.ac: add $built_gcc_dir to $GCJH and $GCJ when crossbuilding.
2006-12-20  Adam Megacz <megacz@cs.berkeley.edu>

	* configure.ac: add $built_gcc_dir to $GCJH and $GCJ when
	crossbuilding.
	* configure: Regenerate.

From-SVN: r120115
2006-12-21 18:07:33 +00:00
Adam Megacz
85bf4c61f4 Makefile.am: remove @X_CFLAGS@ from AM_CXXFLAGS...
2006-12-18  Adam Megacz <megacz@cs.berkeley.edu>

        * Makefile.am: remove @X_CFLAGS@ from AM_CXXFLAGS; it causes
        -I/usr/include to wind up in cross-builds
        * configure: Regenerate.

From-SVN: r120006
2006-12-18 15:00:00 +00:00
Eric Botcazou
aad741f435 tls.m4 (GCC_CHECK_TLS): Do not test TLS with static linking if static linking doesn't even work.
config/
        * tls.m4 (GCC_CHECK_TLS): Do not test TLS with static linking
        if static linking doesn't even work.

libgomp/
        * configure: Regenerate.

libmudflap/
        * configure: Regenerate.

libjava/
        * configure: Regenerate.

libstdc++-v3/
        * configure: Regenerate.

From-SVN: r119487
2006-12-04 11:10:38 +00:00
Mike Stump
69a4984241 locks.h: Enable use of either file on either target to support multilibs from one to the...
* sysdep/x86-64/locks.h: Enable use of either file on either
	target to support multilibs from one to the other.
	* sysdep/i386/locks.h: Likewise.

From-SVN: r119276
2006-11-28 06:05:25 +00:00
Gary Benson
7ddd83802b Security.java: Merge with classpath.
2006-11-21  Gary Benson  <gbenson@redhat.com>

	* java/security/Security.java: Merge with classpath.
	* java/lang/Package.java: Likewise.
	* java/lang/Class.java (getDeclaredAnnotations): New method.

From-SVN: r119057
2006-11-21 16:18:08 +00:00
David Daney
9e08816049 mips-signal.h (sys/syscall.h): Do not include.
2006-11-20  David Daney  <ddaney@avtrex.com>

	* include/mips-signal.h (sys/syscall.h): Do not include.
	(sig_ucontext_t): Removed.
	(MAKE_THROW_FRAME): Changed to be a nop.
	(_INIT_SIG_HANDLER): New macro.
	(INIT_SEGV): Rewrote to use _INIT_SIG_HANDLER.
	(INIT_FPE): Same.

2006-11-20  David Daney  <ddaney@avtrex.com>

	* config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
	PC to point to following instruction.

From-SVN: r119024
2006-11-20 19:49:08 +00:00
David Daney
e9057fe4ee Throw_3.java: New Test.
* testsuite/libjava.lang/Throw_3.java: New Test.
	* testsuite/libjava.lang/Throw_3.out: Its expected output.

From-SVN: r119023
2006-11-20 19:43:25 +00:00
Daniel Jacobowitz
597c25e65d * tls.m4 (GCC_CHECK_TLS): Fall back to a link test.
From-SVN: r118777
2006-11-13 20:35:20 +00:00
Gary Benson
54f9963a20 2006-11-03 Gary Benson <gbenson@redhat.com>
* java/net/Inet4Address.java
	(FAMILY): Renamed to AF_INET.
	(<init>, writeReplace): Reflect the above.
	* java/net/Inet6Address.java
	(FAMILY): Renamed to AF_INET6.
	(<init>): Reflect the above.

From-SVN: r118452
2006-11-03 10:16:30 +00:00
Gary Benson
adefdaca2d InetAddress.java: Removed.
2006-11-03  Gary Benson  <gbenson@redhat.com>

	* java/net/InetAddress.java: Removed.
	* java/net/natInetAddressNoNet.cc: Likewise.
	* java/net/natInetAddressPosix.cc: Likewise.
	* java/net/natInetAddressWin32.cc: Likewise.
	* java/net/VMInetAddress.java (getLocalHostname,
	lookupInaddrAny, getHostByAddr, getHostByName,
	aton): Replace glue methods with native ones.
	* java/net/natVMInetAddressNoNet.cc: New file.
	* java/net/natVMInetAddressPosix.cc: Likewise.
	* java/net/natVMInetAddressWin32.cc: Likewise.
	* Makefile.am, configure.ac: Reflect the above.
	* sources.am, Makefile.in, configure: Rebuilt.

	* java/net/natVMNetworkInterfaceWin32.cc
	(winsock2GetRealNetworkInterfaces): Create InetAddress
	objects using InetAddress.getByAddress.
	* gnu/java/net/natPlainSocketImplWin32.cc
	(accept, getOption): Likewise.
	* gnu/java/net/natPlainDatagramSocketImplWin32.cc
	(peekData, receive, getOption): Likewise.

From-SVN: r118451
2006-11-03 10:16:04 +00:00
Keith Seitz
4cb1c1c396 * gnu/classpath/jdwp/natVMMethod.cc (getLineTable): Implement.
From-SVN: r118420
2006-11-02 17:01:01 +00:00
Keith Seitz
081070150c jvmti.cc (_Jv_JVMTI_GetLineNumberTable): New function.
* jvmti.cc (_Jv_JVMTI_GetLineNumberTable): New function.
        (_Jv_JVMTI_Interface): Define GetLineNumberTable.

From-SVN: r118419
2006-11-02 16:59:04 +00:00
Keith Seitz
444dd946c8 Location.java: New file.
* gnu/gcj/jvmti/Location.java: New file.
        * gnu/gcj/jvmti/BreakpointManager.java: New file.
        * jvmti.cc (_Jv_JVMTI_SetBreakpoint): New function.
        (_Jv_JVMTI_ClearBreakpoint): New function.
        (_Jv_JVMTI_Interface): Define SetBreakpoint and ClearBreakpoint.
        * sources.am: Regenerated.
        * Makefile.in: Regenerated.

From-SVN: r118391
2006-11-01 18:20:19 +00:00
Keith Seitz
67ce74926a Makefile.am (nat_source_files): Add natBreakpoint.cc.
* Makefile.am (nat_source_files): Add natBreakpoint.cc.
        * sources.am: Regenerated.
        * Makefile.in: Regenerated.
        * gnu/gcj/jvmti/Breakpoint.java: New file.
        * gnu/gcj/jvmti/natBreakpoint.java: New file.

From-SVN: r118108
2006-10-28 18:36:16 +00:00
Keith Seitz
f356a436f0 java-stack.h (ncodeMap): Declare.
* include/java-stack.h (ncodeMap): Declare.
        (_Jv_StackTrace): Make _Jv_GetMethodDeclaringClass friend.
        * java/lang/Class.h (_Jv_GetMethodDeclaringClass): Declare.
        * java/lang/natClass.cc (_Jv_GetMethodDeclaringClass): New
        function.
        * stacktrace.cc (ncodeMap): Redefine from file global to global
        for class _Jv_StackTrace.
        (_Jv_StackTrace::UpdateNCodeMap): Add interpreted classes, too,
        so that _Jv_GetMethodDeclaringClass can find them all.
        (_Jv_StackTrace::ClassForFrame): Exclude interpreted classes.
        * jvmti.cc (_Jv_JVMTI_GetMethodDeclaringClass): New function.
        (_Jv_JVMTI_Interface): Define GetMethodDeclaringClass function.

From-SVN: r118100
2006-10-28 02:15:12 +00:00
Andreas Tobler
4f0abdc91b natevents.cc (do_callback_arg_tests): Replace formatting modifiers %p with %#llx and cast the arguments.
2006-10-25  Andreas Tobler  <a.tobler@schweiz.org>

	* testsuite/libjava.jvmti/natevents.cc (do_callback_arg_tests): Replace
	formatting modifiers %p with %#llx and cast the arguments.

From-SVN: r118040
2006-10-25 22:18:39 +02:00
Tom Tromey
23f1d24742 natevents.cc (do_callback_arg_tests): Correctly pass jvalues.
* testsuite/libjava.jvmti/natevents.cc (do_callback_arg_tests):
	Correctly pass jvalues.

From-SVN: r117913
2006-10-20 21:43:36 +00:00
Tom Tromey
e7f7d23387 register2.java: New file.
* testsuite/libjava.jni/register2.java: New file.
	* testsuite/libjava.jni/register2.out: New file.
	* testsuite/libjava.jni/register2.c: New file.
	* java/lang/natClass.cc (_Jv_GetClassNameUtf8): New function.
	* java/lang/Class.h (_Jv_GetClassNameUtf8): Declare.
	* jni.cc (struct NativeMethodCacheEntry): New struct.
	(nathash): Changed type.
	(hash): Updated.
	(nathash_find_slot): Likewise.
	(nathash_find): Likewise.
	(natrehash): Likewise.
	(nathash_add): Likewise.
	(_Jv_JNI_RegisterNatives): Likewise.
	(_Jv_LookupJNIMethod): Likewise.
	Idea from Juerg Lehni <juerg@scratchdisk.com>

Co-Authored-By: Bryce McKinlay <mckinlay@redhat.com>

From-SVN: r117867
2006-10-18 23:17:04 +00:00
Geoffrey Keating
8829ef30e4 natevents.cc (env): Delete.
* testsuite/libjava.jvmti/natevents.cc (env): Delete.
	(ExceptionCB): Fix types for printf arguments.
	(ExceptionCatchCB): Likewise.
	(SingleStepCB): Likewise.
	(BreakpointCB): Likewise.
	(FieldAccessCB): Likewise.
	(FieldModificationCB): Likewise.
	(CompiledMethodLoadCB): Likewise.

From-SVN: r117817
2006-10-17 04:12:59 +00:00
Keith Seitz
0f546316f4 java-insns.h (enum java_code): Add op_breakpoint.
* include/java-insns.h (enum java_code): Add op_breakpoint.
        * include/java-interp.h (_Jv_InterpMethod): Declare breakpoint_insn.
        [INTERPRETER]: Declare _Jv_InterpMethod::bp_insn_slot.
        [!INTERPRETER]: Declare _Jv_InterpMethod::bp_insn_opcode.
        (install_break): Declare.
        * interpret.cc (breakpoint_insn): Define breakpoint insn.
        (compile): Add op_breakpoint to "can't happen" cases.
        [INTERPRETER] Initialize breakpoint insn if necessary.
        (install_break): New method.
        * interpret-run.cc: Add op_breakpoint to insn_targets.
        Add insn_breakpoint label.
        * verify.cc (branch_prepass): Add op_breakpoint to unrecognized
        opcodes section of switch statement.
        (verify_instructions_0): Likewise.

From-SVN: r117734
2006-10-14 20:11:12 +00:00
Keith Seitz
dc0aeb6069 jvmti-int.h (JVMTI): Declare all members "extern".
* include/jvmti-int.h (JVMTI): Declare all members "extern".
        * jvmti.cc (JVMTI): Define.

From-SVN: r117670
2006-10-12 18:18:52 +00:00
Tom Tromey
d233eb7a05 Makefile.in: Rebuilt.
* Makefile.in: Rebuilt.
	* Makefile.am (install-data-local): Use mkinstalldirs.

From-SVN: r117634
2006-10-11 14:42:39 +00:00
Tom Tromey
13869d712f natSystemProperties.cc (insertSystemProperties): Removed obsolete comment.
* gnu/classpath/natSystemProperties.cc (insertSystemProperties):
	Removed obsolete comment.

From-SVN: r117626
2006-10-11 03:05:32 +00:00
Keith Seitz
05ee9ca08f java-interp.h (_Jv_InterpMethod::get_insn): Declare.
* include/java-interp.h (_Jv_InterpMethod::get_insn): Declare.
        (_Jv_InterpMethod::set_insn): Declare.
        * interpret.cc (_Jv_InterpMethod::get_insn): New method.
        (_Jv_InterpMethod::get_insn): New method.

From-SVN: r117614
2006-10-10 20:15:51 +00:00
Tom Tromey
4e34ede292 re PR xml/29362 (NullPointerException in gnu.xml.transform.TransformerImpl.strip(libgcj.so.7rh))
PR classpath/29362:
	* gnu/xml/transform/TransformerImpl.java (transform): Only strip if
	there is a stylesheet.

From-SVN: r117612
2006-10-10 19:31:56 +00:00
Tom Tromey
ab6b9a13d0 prims.cc (_Jv_PrependVersionedLibdir): Use _Jv_platform_path_separator.
* prims.cc (_Jv_PrependVersionedLibdir): Use
	_Jv_platform_path_separator.

From-SVN: r117611
2006-10-10 18:46:41 +00:00
Tom Tromey
51d0a5cc30 re PR libgcj/29205 (lib/pkgconfig/libgcj.pc needs to become version dependent)
PR libgcj/29205:
	* Makefile.in: Rebuilt.
	* Makefile.am (install-data-local): Install the .pc file.
	(pkgconfig_DATA): Removed.

From-SVN: r117610
2006-10-10 18:44:06 +00:00
Gary Benson
afd4a54a00 2006-10-05 Gary Benson <gbenson@redhat.com>
* java/net/SocketPermission.java
	(processHostport): Cope with IPv6 addresses with a
	one-digit first component.

From-SVN: r117454
2006-10-05 09:32:57 +00:00
Gary Benson
704312e738 2006-10-03 Gary Benson <gbenson@redhat.com>
* java/net/InetAddress.java
	(<clinit>): Reorder the static initializers.

From-SVN: r117394
2006-10-03 10:27:28 +00:00
Gary Benson
93a8f49bfa 2006-10-02 Gary Benson <gbenson@redhat.com>
* java/net/InetAddress.java
	(checkConnect): Reinstated.
	(loopbackAddress): Ensure initialized from non-null object.

From-SVN: r117370
2006-10-02 10:54:43 +00:00
Keith Seitz
19add4f7e4 java-interp.h (prepared): Change type to pc_t.
* include/java-interp.h (prepared): Change type to pc_t.
        (insn_index): Define for both DIRECT_THREADED and bytecode interpreters.
        * interpret.cc [!DIRECT_THREADED] (POKEI): Fix typo.
        (insn_index): Implement for bytecode interpreter.
        * interpret-run.cc [!DIRECT_THREADED] (AVAL1U): Add _Jv_Linker class
        qualifier to resolve_pool_entry.
        [!DIRECT_THREADED] (AVAL2U): Likewise.
        [!DIRECT_THREADED] bytecode() cannot be called without an object.
        Changed all typos.
        [!DIRECT_THREADED] Likewise for defining_class.

From-SVN: r117333
2006-09-30 19:20:16 +00:00
Jack Howarth
d4708d9dd4 re PR target/26792 (need to use autoconf when using newly-added libgcc functions)
2006-09-26  Jack Howarth  <howarth@bromo.med.uc.edu>

	PR target/26792:
	* exception.cc (PERSONALITY_FUNCTION): use _Unwind_GetIP
	if HAVE_GETIPINFO not defined.
	* stacktrace.cc (_Jv_StackTrace::UnwindTraceFn): Likewise.
	(_Jv_StackTrace::getLineNumberForFrame): Likewise.
	* configure.ac: use GCC_CHECK_UNWIND_GETIPINFO.
	* aclocal.m4, configure, include/config.h.in, Makefile.in:
	Rebuilt.

From-SVN: r117259
2006-09-27 21:24:23 +00:00