aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/depend.c20
-rw-r--r--gas/input-file.c77
-rw-r--r--gas/itbl-ops.c11
-rw-r--r--gas/listing.c4
-rw-r--r--gas/output-file.c32
-rw-r--r--gas/read.c18
7 files changed, 94 insertions, 77 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0ebe08d..95e9410 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2001-07-10 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * depend.c: Use FOPEN_.. macros in calls to fopen().
+ * input-file.c: As above.
+ * itbl-ops.c: As above.
+ * listing.c: As above.
+ * output-file.c: As above.
+ * read.c: As above.
+
2001-07-08 Anders Norlander <anorland@synergenix.se>
* read.c (s_incbin): New .incbin function.
diff --git a/gas/depend.c b/gas/depend.c
index c6538dd..842f705 100644
--- a/gas/depend.c
+++ b/gas/depend.c
@@ -1,5 +1,5 @@
/* depend.c - Handle dependency tracking.
- Copyright 1997, 1998, 2000 Free Software Foundation, Inc.
+ Copyright 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -21,15 +21,16 @@
#include "as.h"
/* The file to write to, or NULL if no dependencies being kept. */
-static char *dep_file = NULL;
+static char * dep_file = NULL;
-struct dependency {
- char *file;
- struct dependency *next;
-};
+struct dependency
+ {
+ char * file;
+ struct dependency * next;
+ };
/* All the files we depend on. */
-static struct dependency *dep_chain = NULL;
+static struct dependency * dep_chain = NULL;
/* Current column in output file. */
static int column = 0;
@@ -86,9 +87,11 @@ quote_string_for_make (file, src)
{
char *p = src;
int i = 0;
+
for (;;)
{
char c = *p++;
+
switch (c)
{
case '\0':
@@ -102,6 +105,7 @@ quote_string_for_make (file, src)
the end of a file name; and backslashes in other
contexts should not be doubled. */
char *q;
+
for (q = p - 1; src < q && q[-1] == '\\'; q--)
{
if (file)
@@ -190,7 +194,7 @@ print_dependencies ()
if (dep_file == NULL)
return;
- f = fopen (dep_file, "w");
+ f = fopen (dep_file, FOPEN_WT);
if (f == NULL)
{
as_warn (_("Can't open `%s' for writing"), dep_file);
diff --git a/gas/input-file.c b/gas/input-file.c
index f001e52..02512de 100644
--- a/gas/input-file.c
+++ b/gas/input-file.c
@@ -1,5 +1,5 @@
/* input_file.c - Deal with Input Files -
- Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000
+ Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -19,12 +19,10 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/*
- * Confines all details of reading source bytes to this module.
- * All O/S specific crocks should live here.
- * What we lose in "efficiency" we gain in modularity.
- * Note we don't need to #include the "as.h" file. No common coupling!
- */
+/* Confines all details of reading source bytes to this module.
+ All O/S specific crocks should live here.
+ What we lose in "efficiency" we gain in modularity.
+ Note we don't need to #include the "as.h" file. No common coupling! */
#include <stdio.h>
#include <string.h>
@@ -35,34 +33,30 @@
static int input_file_get PARAMS ((char *, int));
/* This variable is non-zero if the file currently being read should be
- preprocessed by app. It is zero if the file can be read straight in.
- */
+ preprocessed by app. It is zero if the file can be read straight in. */
int preprocess = 0;
-/*
- * This code opens a file, then delivers BUFFER_SIZE character
- * chunks of the file on demand.
- * BUFFER_SIZE is supposed to be a number chosen for speed.
- * The caller only asks once what BUFFER_SIZE is, and asks before
- * the nature of the input files (if any) is known.
- */
+/* This code opens a file, then delivers BUFFER_SIZE character
+ chunks of the file on demand.
+ BUFFER_SIZE is supposed to be a number chosen for speed.
+ The caller only asks once what BUFFER_SIZE is, and asks before
+ the nature of the input files (if any) is known. */
#define BUFFER_SIZE (32 * 1024)
-/*
- * We use static data: the data area is not sharable.
- */
+/* We use static data: the data area is not sharable. */
static FILE *f_in;
static char *file_name;
/* Struct for saving the state of this module for file includes. */
-struct saved_file {
- FILE *f_in;
- char *file_name;
- int preprocess;
- char *app_save;
-};
+struct saved_file
+ {
+ FILE * f_in;
+ char * file_name;
+ int preprocess;
+ char * app_save;
+ };
/* These hooks accomodate most operating systems. */
@@ -92,6 +86,7 @@ input_file_is_open ()
/* Push the state of our input, returning a pointer to saved info that
can be restored with input_file_pop (). */
+
char *
input_file_push ()
{
@@ -105,7 +100,8 @@ input_file_push ()
if (preprocess)
saved->app_save = app_push ();
- input_file_begin (); /* Initialize for new file */
+ /* Initialize for new file. */
+ input_file_begin ();
return (char *) saved;
}
@@ -116,7 +112,7 @@ input_file_pop (arg)
{
register struct saved_file *saved = (struct saved_file *) arg;
- input_file_end (); /* Close out old file */
+ input_file_end (); /* Close out old file. */
f_in = saved->f_in;
file_name = saved->file_name;
@@ -140,7 +136,7 @@ input_file_open (filename, pre)
assert (filename != 0); /* Filename may not be NULL. */
if (filename[0])
{ /* We have a file name. Suck it and see. */
- f_in = fopen (filename, "r");
+ f_in = fopen (filename, FOPEN_RT);
file_name = filename;
}
else
@@ -157,7 +153,8 @@ input_file_open (filename, pre)
c = getc (f_in);
if (c == '#')
- { /* Begins with comment, may not want to preprocess */
+ {
+ /* Begins with comment, may not want to preprocess. */
c = getc (f_in);
if (c == 'N')
{
@@ -165,7 +162,7 @@ input_file_open (filename, pre)
if (!strcmp (buf, "O_APP\n"))
preprocess = 0;
if (!strchr (buf, '\n'))
- ungetc ('#', f_in); /* It was longer */
+ ungetc ('#', f_in); /* It was longer. */
else
ungetc ('\n', f_in);
}
@@ -179,13 +176,14 @@ input_file_open (filename, pre)
}
/* Close input file. */
+
void
input_file_close ()
{
+ /* Don't close a null file pointer. */
if (f_in != NULL)
- {
- fclose (f_in);
- } /* don't close a null file pointer */
+ fclose (f_in);
+
f_in = 0;
}
@@ -218,12 +216,10 @@ input_file_give_next_buffer (where)
if (f_in == (FILE *) 0)
return 0;
- /*
- * fflush (stdin); could be done here if you want to synchronise
- * stdin and stdout, for the case where our input file is stdin.
- * Since the assembler shouldn't do any output to stdout, we
- * don't bother to synch output and input.
- */
+ /* fflush (stdin); could be done here if you want to synchronise
+ stdin and stdout, for the case where our input file is stdin.
+ Since the assembler shouldn't do any output to stdout, we
+ don't bother to synch output and input. */
if (preprocess)
size = do_scrub_chars (input_file_get, where, BUFFER_SIZE);
else
@@ -242,5 +238,6 @@ input_file_give_next_buffer (where)
f_in = (FILE *) 0;
return_value = 0;
}
- return (return_value);
+
+ return return_value;
}
diff --git a/gas/itbl-ops.c b/gas/itbl-ops.c
index d3650cd..729ee98 100644
--- a/gas/itbl-ops.c
+++ b/gas/itbl-ops.c
@@ -183,17 +183,18 @@ itbl_parse (char *insntbl)
{
extern FILE *yyin;
extern int yyparse (void);
- yyin = fopen (insntbl, "r");
+
+ yyin = fopen (insntbl, FOPEN_RT);
if (yyin == 0)
{
printf ("Can't open processor instruction specification file \"%s\"\n",
insntbl);
return 1;
}
- else
- {
- while (yyparse ());
- }
+
+ while (yyparse ())
+ ;
+
fclose (yyin);
itbl_have_entries = 1;
return 0;
diff --git a/gas/listing.c b/gas/listing.c
index 8168ebe..2989153 100644
--- a/gas/listing.c
+++ b/gas/listing.c
@@ -485,7 +485,7 @@ buffer_line (file, line, size)
}
last_open_file_info = file;
- last_open_file = fopen (file->filename, "r");
+ last_open_file = fopen (file->filename, FOPEN_RT);
if (last_open_file == NULL)
{
file->at_end = 1;
@@ -1121,7 +1121,7 @@ listing_print (name)
}
else
{
- list_file = fopen (name, "w");
+ list_file = fopen (name, FOPEN_WT);
if (list_file != NULL)
using_stdout = 0;
else
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 */
diff --git a/gas/read.c b/gas/read.c
index ca3a496..de3d9fd 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -1,6 +1,6 @@
/* read.c - read a source file -
Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000 Free Software Foundation, Inc.
+ 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -4950,7 +4950,7 @@ s_incbin (x)
demand_empty_rest_of_line ();
/* Try opening absolute path first, then try include dirs. */
- binfile = fopen (filename, "rb");
+ binfile = fopen (filename, FOPEN_RB);
if (binfile == NULL)
{
int i;
@@ -4961,7 +4961,7 @@ s_incbin (x)
{
sprintf (path, "%s/%s", include_dirs[i], filename);
- binfile = fopen (path, "rb");
+ binfile = fopen (path, FOPEN_RB);
if (binfile != NULL)
break;
}
@@ -4974,6 +4974,8 @@ s_incbin (x)
if (binfile)
{
+ long file_len;
+
register_dependency (path);
/* Compute the length of the file. */
@@ -4982,16 +4984,16 @@ s_incbin (x)
as_bad (_("seek to end of .incbin file failed `%s'"), path);
goto done;
}
- len = ftell (binfile);
+ file_len = ftell (binfile);
/* If a count was not specified use the size of the file. */
if (count == 0)
- count = len;
+ count = file_len;
- if (skip + count > len)
+ if (skip + count > file_len)
{
as_bad (_("skip (%ld) + count (%ld) larger than file size (%ld)"),
- skip, count, len);
+ skip, count, file_len);
goto done;
}
@@ -5064,7 +5066,7 @@ s_include (arg)
strcpy (path, include_dirs[i]);
strcat (path, "/");
strcat (path, filename);
- if (0 != (try = fopen (path, "r")))
+ if (0 != (try = fopen (path, FOPEN_RT)))
{
fclose (try);
goto gotit;