OSDN Git Service

PR c++/26917
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 2 Sep 2006 06:52:24 +0000 (06:52 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 2 Sep 2006 06:52:24 +0000 (06:52 +0000)
* repo.c (repo_file): Remove.
(open_repo_file, reopen_repo_file_for_write): Return fopened
FILE * instead of setting global repo_file variable.
(init_repo): Adjust caller.
(finish_repo): Likewise.  Return instead of goto out before
reopen_repo_file_for_write has been called.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116654 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/repo.c

index 45597c3..5f37dde 100644 (file)
@@ -1,3 +1,13 @@
+2006-09-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/26917
+       * repo.c (repo_file): Remove.
+       (open_repo_file, reopen_repo_file_for_write): Return fopened
+       FILE * instead of setting global repo_file variable.
+       (init_repo): Adjust caller.
+       (finish_repo): Likewise.  Return instead of goto out before
+       reopen_repo_file_for_write has been called.
+
 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR c++/28705
index d663cc0..2bf0303 100644 (file)
@@ -40,13 +40,12 @@ Boston, MA 02110-1301, USA.  */
 
 static char *extract_string (char **);
 static const char *get_base_filename (const char *);
-static void open_repo_file (const char *);
+static FILE *open_repo_file (const char *);
 static char *afgets (FILE *);
-static void reopen_repo_file_for_write (void);
+static FILE *reopen_repo_file_for_write (void);
 
 static GTY(()) tree pending_repo;
 static char *repo_name;
-static FILE *repo_file;
 
 static const char *old_args, *old_dir, *old_main;
 
@@ -118,14 +117,14 @@ get_base_filename (const char *filename)
   return lbasename (filename);
 }
 
-static void
+static FILE *
 open_repo_file (const char *filename)
 {
   const char *p;
   const char *s = get_base_filename (filename);
 
   if (s == NULL)
-    return;
+    return NULL;
 
   p = lbasename (s);
   p = strrchr (p, '.');
@@ -136,7 +135,7 @@ open_repo_file (const char *filename)
   memcpy (repo_name, s, p - s);
   memcpy (repo_name + (p - s), ".rpo", 5);
 
-  repo_file = fopen (repo_name, "r");
+  return fopen (repo_name, "r");
 }
 
 static char *
@@ -155,6 +154,7 @@ void
 init_repo (void)
 {
   char *buf;
+  FILE *repo_file;
 
   if (! flag_use_repository)
     return;
@@ -167,7 +167,7 @@ init_repo (void)
   if (!temporary_obstack_initialized_p)
     gcc_obstack_init (&temporary_obstack);
 
-  open_repo_file (main_input_filename);
+  repo_file = open_repo_file (main_input_filename);
 
   if (repo_file == 0)
     return;
@@ -205,16 +205,18 @@ init_repo (void)
   fclose (repo_file);
 }
 
-static void
+static FILE *
 reopen_repo_file_for_write (void)
 {
-  repo_file = fopen (repo_name, "w");
+  FILE *repo_file = fopen (repo_name, "w");
 
   if (repo_file == 0)
     {
       error ("can't create repository information file %qs", repo_name);
       flag_use_repository = 0;
     }
+
+  return repo_file;
 }
 
 /* Emit any pending repos.  */
@@ -224,14 +226,15 @@ finish_repo (void)
 {
   tree t;
   char *dir, *args;
+  FILE *repo_file;
 
   if (!flag_use_repository)
     return;
 
   if (errorcount || sorrycount)
-    goto out;
+    return;
 
-  reopen_repo_file_for_write ();
+  repo_file = reopen_repo_file_for_write ();
   if (repo_file == 0)
     goto out;