re PR java/9677 (File not found if spaces in file name)
authorElliot Lee <sopwith@redhat.com>
Mon, 16 Aug 2004 11:49:22 +0000 (11:49 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Mon, 16 Aug 2004 11:49:22 +0000 (11:49 +0000)
2004-08-16  Elliot Lee <sopwith@redhat.com>

        PR java/9677
        * jcf-parse.c (java_parse_file): Handle filenames with embedded
        spaces, and quoted filelists.

From-SVN: r86051

gcc/java/ChangeLog
gcc/java/jcf-parse.c

index 493a5f3c2f777b24ca1a526fbd394f6cf919edae..4e0dc7e3de388ca5c5b4e57f8f547b20411345fd 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-16  Elliot Lee <sopwith@redhat.com>
+
+       PR java/9677
+       * jcf-parse.c (java_parse_file): Handle filenames with embedded
+       spaces, and quoted filelists.
+
 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
 
        * boehm.c (get_boehm_type_descriptor): Use build_int_cst.
index d62b1b8f32557cee058b3e895ac78d993cf073d1..cb4853f412834b11b43cbd9071c920354160dd28 100644 (file)
@@ -897,7 +897,8 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
   char *list, *next;
   tree node;
   FILE *finput = NULL;
-
+  int in_quotes = 0;
   if (flag_filelist_file)
     {
       int avail = 2000;
@@ -940,8 +941,9 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
       for (next = list; ; )
        {
          char ch = *next;
-         if (ch == '\n' || ch == '\r' || ch == '\t' || ch == ' '
-             || ch == '&' /* FIXME */)
+         if (flag_filelist_file && ! in_quotes
+             && (ch == '\n' || ch == '\r' || ch == '\t' || ch == ' '
+                 || ch == '&') /* FIXME */)
            {
              if (next == list)
                {
@@ -955,6 +957,15 @@ java_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
                  break;
                }
            }
+         if (flag_filelist_file && ch == '"')
+           {
+             in_quotes = ! in_quotes;
+             *next++ = '\0';
+             if (in_quotes) 
+               list = next;
+             else 
+               break;
+           }
          if (ch == '\0')
            {
              next = NULL;