public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: In ProcBuilder, catch any Throwable; Make FileElements return NULL when no file. Date: Sat, 21 Jun 2008 03:42:00 -0000 [thread overview] Message-ID: <20080621034216.8422.qmail@sourceware.org> (raw) The branch, master has been updated via 5539327049ca4af57908f6bd0e90196a20378395 (commit) from 96412cf7f66a603e6ba048433317aed31c8b1543 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 5539327049ca4af57908f6bd0e90196a20378395 Author: Andrew Cagney <cagney@redhat.com> Date: Fri Jun 20 23:38:33 2008 -0400 In ProcBuilder, catch any Throwable; Make FileElements return NULL when no file. frysk-sys/frysk/sys/proc/ChangeLog 2008-06-20 Andrew Cagney <cagney@redhat.com> * jni/ProcBuilder.cxx (ProcBuilder::construct): Catch a Throwable. * jni/ProcBuilder.cxx (ProcBuilder::construct): Ditto. frysk-sys/jnixx/ChangeLog 2008-06-20 Andrew Cagney <cagney@redhat.com> * elements.hxx (slurp): Return the BUF. (FileElements::slurp): Update. * elements.cxx (slurp): Update; when file-not-found return NULL. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/sys/proc/ChangeLog | 5 +++++ frysk-sys/frysk/sys/proc/cni/ProcBuilder.cxx | 4 ++-- frysk-sys/frysk/sys/proc/jni/ProcBuilder.cxx | 4 ++-- frysk-sys/jnixx/ChangeLog | 6 ++++++ frysk-sys/jnixx/elements.cxx | 14 +++++++------- frysk-sys/jnixx/elements.hxx | 11 ++++++++--- 6 files changed, 30 insertions(+), 14 deletions(-) First 500 lines of diff: diff --git a/frysk-sys/frysk/sys/proc/ChangeLog b/frysk-sys/frysk/sys/proc/ChangeLog index 79c61d4..b6ac106 100644 --- a/frysk-sys/frysk/sys/proc/ChangeLog +++ b/frysk-sys/frysk/sys/proc/ChangeLog @@ -1,3 +1,8 @@ +2008-06-20 Andrew Cagney <cagney@redhat.com> + + * jni/ProcBuilder.cxx (ProcBuilder::construct): Catch a Throwable. + * jni/ProcBuilder.cxx (ProcBuilder::construct): Ditto. + 2008-06-12 Andrew Cagney <cagney@redhat.com> * Exe.java (getName): Rename get. diff --git a/frysk-sys/frysk/sys/proc/cni/ProcBuilder.cxx b/frysk-sys/frysk/sys/proc/cni/ProcBuilder.cxx index 20c09e6..2b0bc85 100644 --- a/frysk-sys/frysk/sys/proc/cni/ProcBuilder.cxx +++ b/frysk-sys/frysk/sys/proc/cni/ProcBuilder.cxx @@ -97,9 +97,9 @@ frysk::sys::proc::ProcBuilder::construct(jint pid, frysk::rsl::Log* warning) { try { build(frysk::sys::ProcessIdentifierFactory::create(id)); - } catch (java::lang::RuntimeException *e) { + } catch (java::lang::Throwable *t) { ::closedir(proc); - throw e; + throw t; } } diff --git a/frysk-sys/frysk/sys/proc/jni/ProcBuilder.cxx b/frysk-sys/frysk/sys/proc/jni/ProcBuilder.cxx index 866dfd1..2cc52ae 100644 --- a/frysk-sys/frysk/sys/proc/jni/ProcBuilder.cxx +++ b/frysk-sys/frysk/sys/proc/jni/ProcBuilder.cxx @@ -92,9 +92,9 @@ frysk::sys::proc::ProcBuilder::construct(::jnixx::env env, jint pid, try { build(env, frysk::sys::ProcessIdentifierFactory::create(env, id)); - } catch (java::lang::RuntimeException *e) { + } catch (java::lang::Throwable t) { ::closedir(proc); - throw e; + throw t; } } diff --git a/frysk-sys/jnixx/ChangeLog b/frysk-sys/jnixx/ChangeLog index 8a2673e..d9ce902 100644 --- a/frysk-sys/jnixx/ChangeLog +++ b/frysk-sys/jnixx/ChangeLog @@ -1,3 +1,9 @@ +2008-06-20 Andrew Cagney <cagney@redhat.com> + + * elements.hxx (slurp): Return the BUF. + (FileElements::slurp): Update. + * elements.cxx (slurp): Update; when file-not-found return NULL. + 2008-06-12 Andrew Cagney <cagney@redhat.com> * exceptions.cxx (userException): Implement. diff --git a/frysk-sys/jnixx/elements.cxx b/frysk-sys/jnixx/elements.cxx index 4a432ae..4200f2f 100644 --- a/frysk-sys/jnixx/elements.cxx +++ b/frysk-sys/jnixx/elements.cxx @@ -102,12 +102,13 @@ chars2strings(::jnixx::env env, char** argv) { return strings; } -void -slurp(jnixx::env env, const char file[], jbyte*& buf, jsize& len) { +jbyte* +slurp(jnixx::env env, const char file[], jsize& len) { // Attempt to open the file. int fd = ::open(file, O_RDONLY); if (fd < 0) { - errnoException(env, errno, "open", "file %s", file); + len = 0; + return NULL; } // Initially allocate space for two BUFSIZE reads (and an extra NUL @@ -117,7 +118,7 @@ slurp(jnixx::env env, const char file[], jbyte*& buf, jsize& len) { // reads are needed to confirm EOF. Allocating 2&BUFSIZE ensures // that there's always space for at least two reads. Ref SW #3370 jsize allocated = BUFSIZ * 2 + 1; - buf = (jbyte*) ::malloc(allocated); + jbyte* buf = (jbyte*) ::malloc(allocated); if (buf == NULL) { errnoException(env, errno, "malloc"); } @@ -131,9 +132,8 @@ slurp(jnixx::env env, const char file[], jbyte*& buf, jsize& len) { ::close(fd); ::free(buf); // Abandon the read with elements == NULL. - buf = NULL; len = 0; - return; + return NULL; } else if (size == 0) { break; } @@ -149,7 +149,6 @@ slurp(jnixx::env env, const char file[], jbyte*& buf, jsize& len) { int err = errno; ::close(fd); ::free(buf); - buf = NULL; len = 0; errnoException(env, err, "realloc"); } @@ -162,4 +161,5 @@ slurp(jnixx::env env, const char file[], jbyte*& buf, jsize& len) { // Guarentee that the buffer is NUL terminated; but don't count that // as part of the buffer. buf[len] = '\0'; + return buf; } diff --git a/frysk-sys/jnixx/elements.hxx b/frysk-sys/jnixx/elements.hxx index 75f137f..dcf8109 100644 --- a/frysk-sys/jnixx/elements.hxx +++ b/frysk-sys/jnixx/elements.hxx @@ -49,7 +49,13 @@ extern char** strings2chars(::jnixx::env, ::jnixx::array<java::lang::String>); extern ::jnixx::array<java::lang::String> chars2strings(::jnixx::env, char**); -extern void slurp(::jnixx::env, const char[], jbyte* (&), jsize&); + +/** + * Attempt to read the entire contents of the specified file. Return + * BUF and set LEN, or NULL should the open fail. The BUF will be NUL + * terminated but the NUL will not be included in the character count. + */ +extern jbyte* slurp(::jnixx::env, const char file[], jsize& len); class StringArrayChars { private: @@ -239,9 +245,8 @@ public: } protected: void slurp(jnixx::env& env, type* (&buf), jsize &len) { - jbyte* buffer; jsize length; - ::slurp(env, file, buffer, length); + jbyte* buffer = ::slurp(env, file, length); buf = (type*)buffer; len = length / sizeof(type); } hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-06-21 3:42 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080621034216.8422.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).