diff options
Diffstat (limited to 'gas/output-file.c')
-rw-r--r-- | gas/output-file.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/gas/output-file.c b/gas/output-file.c index bcd49b5..0805509 100644 --- a/gas/output-file.c +++ b/gas/output-file.c @@ -1,5 +1,5 @@ /* output-file.c - Deal with the output file - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999 + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -16,7 +16,8 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ #include <stdio.h> @@ -44,14 +45,14 @@ output_file_create (name) char *name; { if (name[0] == '-' && name[1] == '\0') - { - as_fatal (_("Can't open a bfd on stdout %s "), name); - } + as_fatal (_("Can't open a bfd on stdout %s "), name); + else if (!(stdoutput = bfd_openw (name, TARGET_FORMAT))) { as_perror (_("FATAL: Can't create %s"), name); exit (EXIT_FAILURE); } + bfd_set_format (stdoutput, bfd_object); #ifdef BFD_ASSEMBLER bfd_set_arch_mach (stdoutput, TARGET_ARCH, TARGET_MACH); @@ -73,14 +74,14 @@ output_file_close (filename) exit (EXIT_FAILURE); } #else - /* Close the bfd without getting bfd to write out anything by itself */ + /* Close the bfd without getting bfd to write out anything by itself. */ if (bfd_close_all_done (stdoutput) == 0) { as_perror (_("FATAL: Can't close %s\n"), filename); exit (EXIT_FAILURE); } #endif - stdoutput = NULL; /* Trust nobody! */ + stdoutput = NULL; /* Trust nobody! */ } #ifndef BFD_ASSEMBLER @@ -108,11 +109,12 @@ output_file_create (name) return; } - stdoutput = fopen (name, "wb"); + stdoutput = fopen (name, FOPEN_WB); /* Some systems don't grok "b" in fopen modes. */ + /* XXX - is this still necessary now that we use FOPEN_WB ? */ if (stdoutput == NULL) - stdoutput = fopen (name, "w"); + stdoutput = fopen (name, FOPEN_W); if (stdoutput == NULL) { @@ -130,18 +132,21 @@ output_file_close (filename) as_perror (_("FATAL: Can't close %s"), filename); exit (EXIT_FAILURE); } - stdoutput = NULL; /* Trust nobody! */ + + /* Trust nobody! */ + stdoutput = NULL; } void output_file_append (where, length, filename) - char *where; - long length; - char *filename; + char * where; + long length; + char * filename; { for (; length; length--, where++) { (void) putc (*where, stdoutput); + if (ferror (stdoutput)) /* if ( EOF == (putc( *where, stdoutput )) ) */ { @@ -153,4 +158,3 @@ output_file_append (where, length, filename) #endif -/* end of output-file.c */ |