public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: In ProcBuilder, catch any Throwable; Make FileElements return NULL when no file.
@ 2008-06-21  3:42 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-06-21  3:42 UTC (permalink / raw)
  To: frysk-cvs

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-06-21  3:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-21  3:42 [SCM] master: In ProcBuilder, catch any Throwable; Make FileElements return NULL when no file cagney

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).