This is the mail archive of the frysk-cvs@sources.redhat.com mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[SCM] master: Make jni exceptions throw exceptions.


The branch, master has been updated
       via  69b43e47f5db070885098d9159ffb5b6e52e0794 (commit)
      from  c27ec54879bae0c562ab9d105fa15c454423c3b4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 69b43e47f5db070885098d9159ffb5b6e52e0794
Author: Andrew Cagney <cagney@redhat.com>
Date:   Thu May 1 16:01:56 2008 -0400

    Make jni exceptions throw exceptions.
    
    frysk-sys/frysk/jni/ChangeLog
    2008-05-01  Andrew Cagney  <cagney@redhat.com>
    
    	* exceptions.cxx (runtimeException): Throw an exception.
    	* exceptions.hxx: Mark with noreturn.
    
    frysk-sys/frysk/sys/ChangeLog
    2008-05-01  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/PseudoTerminal.cxx (PseudoTerminal::getName): Implement.

-----------------------------------------------------------------------

Summary of changes:
 frysk-sys/frysk/jni/ChangeLog              |    3 +++
 frysk-sys/frysk/jni/exceptions.cxx         |    2 ++
 frysk-sys/frysk/jni/exceptions.hxx         |    5 ++++-
 frysk-sys/frysk/jni/jnixx.java             |    3 +++
 frysk-sys/frysk/sys/ChangeLog              |    2 ++
 frysk-sys/frysk/sys/jni/PseudoTerminal.cxx |   18 ++++++++++++++++++
 6 files changed, 32 insertions(+), 1 deletions(-)

First 500 lines of diff:
diff --git a/frysk-sys/frysk/jni/ChangeLog b/frysk-sys/frysk/jni/ChangeLog
index 6c531b5..803fcd9 100644
--- a/frysk-sys/frysk/jni/ChangeLog
+++ b/frysk-sys/frysk/jni/ChangeLog
@@ -1,5 +1,8 @@
 2008-05-01  Andrew Cagney  <cagney@redhat.com>
 
+	* exceptions.cxx (runtimeException): Throw an exception.
+	* exceptions.hxx: Mark with noreturn.
+
 	* xx.hxx (jstringArray): Define.
 	* jnixx.java: Generate function signatures; wrap headers in
 	#ifdef; better handle array types.
diff --git a/frysk-sys/frysk/jni/exceptions.cxx b/frysk-sys/frysk/jni/exceptions.cxx
index c1c8834..29862ba 100644
--- a/frysk-sys/frysk/jni/exceptions.cxx
+++ b/frysk-sys/frysk/jni/exceptions.cxx
@@ -45,6 +45,7 @@
 
 #include <jni.h>
 
+#include "frysk/jni/xx.hxx"
 #include "frysk/jni/exceptions.hxx"
 
 void
@@ -78,4 +79,5 @@ runtimeException(JNIEnv *env, const char *fmt, ...) {
     ::free(msg);
     va_end(ap);
   }
+  throw jnixx_exception();
 }
diff --git a/frysk-sys/frysk/jni/exceptions.hxx b/frysk-sys/frysk/jni/exceptions.hxx
index 06473d0..0deb3a4 100644
--- a/frysk-sys/frysk/jni/exceptions.hxx
+++ b/frysk-sys/frysk/jni/exceptions.hxx
@@ -42,10 +42,13 @@
  * code return.
  */
 
-extern void errnoException(JNIEnv *env, int error, const char *prefix);
+extern void errnoException(JNIEnv *env, int error, const char *prefix)
+  __attribute__((noreturn));
 extern void errnoException(JNIEnv *env, int error, const char *prefix,
 			   const char *fmt, ...)
+  __attribute__((noreturn))
   __attribute__((format (printf, 4, 5)));
 
 extern void runtimeException(JNIEnv *env, const char *fmt, ...)
+  __attribute__((noreturn))
   __attribute__((format (printf, 2, 3)));
diff --git a/frysk-sys/frysk/jni/jnixx.java b/frysk-sys/frysk/jni/jnixx.java
index 6d8fcfc..e83524b 100644
--- a/frysk-sys/frysk/jni/jnixx.java
+++ b/frysk-sys/frysk/jni/jnixx.java
@@ -327,6 +327,9 @@ class jnixx {
 
     static void printCxxMethodDeclaration(Method method) {
 	println();
+	if (Modifier.isNative(method.getModifiers())) {
+	    println(" // native:");
+	}
 	println(" public:");
 	pad(1);
 	print("static ");
diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog
index 4420fa1..f5e88b3 100644
--- a/frysk-sys/frysk/sys/ChangeLog
+++ b/frysk-sys/frysk/sys/ChangeLog
@@ -1,5 +1,7 @@
 2008-05-01  Andrew Cagney  <cagney@redhat.com>
 
+	* jni/PseudoTerminal.cxx (PseudoTerminal::getName): Implement.
+	
 	* jni/FileDescriptor.cxx: Include jnixx generated header.
 	* jni/StatelessFile.cxx: Ditto.
 	* jni/Wait.cxx: Ditto.
diff --git a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx
index 89e3e29..58306f9 100644
--- a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx
+++ b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx
@@ -37,4 +37,22 @@
 // version and license this file solely under the GPL without
 // exception.
 
+#include <stdlib.h>
+#include <errno.h>
+
 #include "frysk/sys/PseudoTerminal-jni.hxx"
+
+#include "frysk/jni/exceptions.hxx"
+
+jstring
+frysk::sys::PseudoTerminal::getName(JNIEnv* env, jint pty) {
+  const char *name = ::ptsname(pty);
+  if (name == NULL)
+    errnoException(env, errno, "ptsname");
+  return newStringUTF(env, name);
+}
+
+jint
+frysk::sys::PseudoTerminal::open(JNIEnv* env, jboolean) {
+  return -1;
+}


hooks/post-receive
--
frysk system monitor/debugger


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]