From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6500 invoked by alias); 1 May 2008 20:03:13 -0000 Received: (qmail 6474 invoked by uid 367); 1 May 2008 20:03:12 -0000 Date: Thu, 01 May 2008 20:03:00 -0000 Message-ID: <20080501200312.6459.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Make jni exceptions throw exceptions. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: c27ec54879bae0c562ab9d105fa15c454423c3b4 X-Git-Newrev: 69b43e47f5db070885098d9159ffb5b6e52e0794 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q2/txt/msg00176.txt.bz2 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 Date: Thu May 1 16:01:56 2008 -0400 Make jni exceptions throw exceptions. frysk-sys/frysk/jni/ChangeLog 2008-05-01 Andrew Cagney * exceptions.cxx (runtimeException): Throw an exception. * exceptions.hxx: Mark with noreturn. frysk-sys/frysk/sys/ChangeLog 2008-05-01 Andrew Cagney * 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 + * 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 +#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 + * 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 +#include + #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