diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-02 06:52:24 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-02 06:52:24 +0000 |
commit | 8b35a404130eeb21bb75e2773402c06a690326f4 (patch) | |
tree | 7c0f9d57466484b3bb7265d6bc6ad12fd35d834b /gcc/cp/repo.c | |
parent | 3d5945610646adb6946a3251f4953929966fed2e (diff) | |
download | gcc-8b35a404130eeb21bb75e2773402c06a690326f4.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116654 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/repo.c')
-rw-r--r-- | gcc/cp/repo.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c index d663cc0870f..2bf0303302f 100644 --- a/gcc/cp/repo.c +++ b/gcc/cp/repo.c @@ -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; |