diff options
author | Per Bothner <bothner@cygnus.com> | 1998-11-15 14:12:42 +0000 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 1998-11-15 06:12:42 -0800 |
commit | 0ef38928667f16fbf49c8a422495a7791e4340c9 (patch) | |
tree | 60f9d02b1b9c05fbbb80d07ea00e1cbb99a19cd1 /gcc/java/jcf-io.c | |
parent | 46689c0ba4807c2f85b4626972a9b6554b3bea13 (diff) | |
download | gcc-0ef38928667f16fbf49c8a422495a7791e4340c9.zip gcc-0ef38928667f16fbf49c8a422495a7791e4340c9.tar.gz gcc-0ef38928667f16fbf49c8a422495a7791e4340c9.tar.bz2 |
jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro.
8
* jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro.
* jcf-io.c (find_class): Simpler/cleaner structure fixes a bug.
From-SVN: r23659
Diffstat (limited to 'gcc/java/jcf-io.c')
-rw-r--r-- | gcc/java/jcf-io.c | 147 |
1 files changed, 69 insertions, 78 deletions
diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c index c1c5b7a..259819b 100644 --- a/gcc/java/jcf-io.c +++ b/gcc/java/jcf-io.c @@ -259,7 +259,7 @@ DEFUN(find_class, (classname, classname_length, jcf, do_class_file), #else int fd; #endif - int i, k, java, class; + int i, k, java, class = -1; struct stat java_buf, class_buf; char *dep_file; void *entry, *java_entry; @@ -341,95 +341,86 @@ DEFUN(find_class, (classname, classname_length, jcf, do_class_file), } class = stat (buffer, &class_buf); - /* This is a little odd: if we didn't find the class file, we - can just skip to the next iteration. However, if this is the - last iteration, then we want to search for the .java file as - well. It was a little easier to implement this with two - loops, as opposed to checking for each type of file each time - through the loop. */ - if (class && jcf_path_next (entry)) - continue; + if (class == 0) + break; + } - /* Check for out of synch .class/.java files. */ - java = 1; - for (java_entry = jcf_path_start (); - java && java_entry != NULL; - java_entry = jcf_path_next (java_entry)) - { - int m, l; + /* Check for out of synch .class/.java files. */ + java = 1; + for (java_entry = jcf_path_start (); + java && java_entry != NULL; + java_entry = jcf_path_next (java_entry)) + { + int m, l; - if (jcf_path_is_zipfile (java_entry)) - continue; + if (jcf_path_is_zipfile (java_entry)) + continue; - /* Compute name of .java file. */ - strcpy (java_buffer, jcf_path_name (java_entry)); - l = strlen (java_buffer); - for (m = 0; m < classname_length; ++m) - { - java_buffer[m + l] = (classname[m] == '.' - ? '/' - : classname[m]); - } - strcpy (java_buffer + m + l, ".java"); - - /* FIXME: until the `.java' parser is fully working, we only - look for a .java file when one was mentioned on the - command line. This lets us test the .java parser fairly - easily, without compromising our ability to use the - .class parser without fear. */ - if (saw_java_source) - java = stat (java_buffer, &java_buf); - } + /* Compute name of .java file. */ + strcpy (java_buffer, jcf_path_name (java_entry)); + l = strlen (java_buffer); + for (m = 0; m < classname_length; ++m) + java_buffer[m + l] = (classname[m] == '.' ? '/' : classname[m]); + strcpy (java_buffer + m + l, ".java"); + + /* FIXME: until the `.java' parser is fully working, we only + look for a .java file when one was mentioned on the + command line. This lets us test the .java parser fairly + easily, without compromising our ability to use the + .class parser without fear. */ + if (saw_java_source) + java = stat (java_buffer, &java_buf); + } - if (! java && ! class && java_buf.st_mtime >= class_buf.st_mtime) - jcf->outofsynch = 1; + if (! java && ! class && java_buf.st_mtime >= class_buf.st_mtime) + jcf->outofsynch = 1; - if (! java) - dep_file = java_buffer; - else - dep_file = buffer; + if (! java) + dep_file = java_buffer; + else + dep_file = buffer; #if JCF_USE_STDIO - if (!class) - { - SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); - stream = fopen (buffer, "rb"); - if (stream) - goto found; - } - /* Give .java a try, if necessary */ - if (!java) + if (!class) + { + SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); + stream = fopen (buffer, "rb"); + if (stream) + goto found; + } + /* Give .java a try, if necessary */ + if (!java) + { + strcpy (buffer, java_buffer); + SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); + stream = fopen (buffer, "r"); + if (stream) { - strcpy (buffer, java_buffer); - SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); - stream = fopen (buffer, "r"); - if (stream) - { - jcf->java_source = 1; - goto found; - } + jcf->java_source = 1; + goto found; } + } #else - if (!class) - { - SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); - fd = open (buffer, O_RDONLY | O_BINARY); - if (fd >= 0) - goto found; - } - /* Give .java a try, if necessary */ - if (!java) + if (!class) + { + SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); + fd = open (buffer, O_RDONLY | O_BINARY); + if (fd >= 0) + goto found; + } + /* Give .java a try, if necessary */ + if (!java) + { + strcpy (buffer, java_buffer); + SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); + fd = open (buffer, O_RDONLY); + if (fd >= 0) { - strcpy (buffer, java_buffer); - SOURCE_FRONTEND_DEBUG (("Trying %s", buffer)); - fd = open (buffer, O_RDONLY); - if (fd >= 0) - { - jcf->java_source = 1; - goto found; - } + jcf->java_source = 1; + goto found; } -#endif } +#endif + free (buffer); return NULL; found: |