Use FOPEN_.. macros in calls to fopen().
This commit is contained in:
parent
c2a1a436ff
commit
f740e790c7
7 changed files with 94 additions and 77 deletions
|
@ -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.
|
||||
|
|
20
gas/depend.c
20
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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
18
gas/read.c
18
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;
|
||||
|
|
Loading…
Reference in a new issue