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>
|
2001-07-08 Anders Norlander <anorland@synergenix.se>
|
||||||
|
|
||||||
* read.c (s_incbin): New .incbin function.
|
* read.c (s_incbin): New .incbin function.
|
||||||
|
|
20
gas/depend.c
20
gas/depend.c
|
@ -1,5 +1,5 @@
|
||||||
/* depend.c - Handle dependency tracking.
|
/* 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.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
|
@ -21,15 +21,16 @@
|
||||||
#include "as.h"
|
#include "as.h"
|
||||||
|
|
||||||
/* The file to write to, or NULL if no dependencies being kept. */
|
/* The file to write to, or NULL if no dependencies being kept. */
|
||||||
static char *dep_file = NULL;
|
static char * dep_file = NULL;
|
||||||
|
|
||||||
struct dependency {
|
struct dependency
|
||||||
char *file;
|
{
|
||||||
struct dependency *next;
|
char * file;
|
||||||
};
|
struct dependency * next;
|
||||||
|
};
|
||||||
|
|
||||||
/* All the files we depend on. */
|
/* All the files we depend on. */
|
||||||
static struct dependency *dep_chain = NULL;
|
static struct dependency * dep_chain = NULL;
|
||||||
|
|
||||||
/* Current column in output file. */
|
/* Current column in output file. */
|
||||||
static int column = 0;
|
static int column = 0;
|
||||||
|
@ -86,9 +87,11 @@ quote_string_for_make (file, src)
|
||||||
{
|
{
|
||||||
char *p = src;
|
char *p = src;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
char c = *p++;
|
char c = *p++;
|
||||||
|
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case '\0':
|
case '\0':
|
||||||
|
@ -102,6 +105,7 @@ quote_string_for_make (file, src)
|
||||||
the end of a file name; and backslashes in other
|
the end of a file name; and backslashes in other
|
||||||
contexts should not be doubled. */
|
contexts should not be doubled. */
|
||||||
char *q;
|
char *q;
|
||||||
|
|
||||||
for (q = p - 1; src < q && q[-1] == '\\'; q--)
|
for (q = p - 1; src < q && q[-1] == '\\'; q--)
|
||||||
{
|
{
|
||||||
if (file)
|
if (file)
|
||||||
|
@ -190,7 +194,7 @@ print_dependencies ()
|
||||||
if (dep_file == NULL)
|
if (dep_file == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
f = fopen (dep_file, "w");
|
f = fopen (dep_file, FOPEN_WT);
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
{
|
{
|
||||||
as_warn (_("Can't open `%s' for writing"), dep_file);
|
as_warn (_("Can't open `%s' for writing"), dep_file);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* input_file.c - Deal with Input Files -
|
/* 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.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
@ -19,12 +19,10 @@
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
/*
|
/* Confines all details of reading source bytes to this module.
|
||||||
* Confines all details of reading source bytes to this module.
|
All O/S specific crocks should live here.
|
||||||
* All O/S specific crocks should live here.
|
What we lose in "efficiency" we gain in modularity.
|
||||||
* What we lose in "efficiency" we gain in modularity.
|
Note we don't need to #include the "as.h" file. No common coupling! */
|
||||||
* Note we don't need to #include the "as.h" file. No common coupling!
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -35,34 +33,30 @@
|
||||||
static int input_file_get PARAMS ((char *, int));
|
static int input_file_get PARAMS ((char *, int));
|
||||||
|
|
||||||
/* This variable is non-zero if the file currently being read should be
|
/* 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;
|
int preprocess = 0;
|
||||||
|
|
||||||
/*
|
/* This code opens a file, then delivers BUFFER_SIZE character
|
||||||
* This code opens a file, then delivers BUFFER_SIZE character
|
chunks of the file on demand.
|
||||||
* chunks of the file on demand.
|
BUFFER_SIZE is supposed to be a number chosen for speed.
|
||||||
* BUFFER_SIZE is supposed to be a number chosen for speed.
|
The caller only asks once what BUFFER_SIZE is, and asks before
|
||||||
* The caller only asks once what BUFFER_SIZE is, and asks before
|
the nature of the input files (if any) is known. */
|
||||||
* the nature of the input files (if any) is known.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define BUFFER_SIZE (32 * 1024)
|
#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 FILE *f_in;
|
||||||
static char *file_name;
|
static char *file_name;
|
||||||
|
|
||||||
/* Struct for saving the state of this module for file includes. */
|
/* Struct for saving the state of this module for file includes. */
|
||||||
struct saved_file {
|
struct saved_file
|
||||||
FILE *f_in;
|
{
|
||||||
char *file_name;
|
FILE * f_in;
|
||||||
int preprocess;
|
char * file_name;
|
||||||
char *app_save;
|
int preprocess;
|
||||||
};
|
char * app_save;
|
||||||
|
};
|
||||||
|
|
||||||
/* These hooks accomodate most operating systems. */
|
/* 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
|
/* Push the state of our input, returning a pointer to saved info that
|
||||||
can be restored with input_file_pop (). */
|
can be restored with input_file_pop (). */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
input_file_push ()
|
input_file_push ()
|
||||||
{
|
{
|
||||||
|
@ -105,7 +100,8 @@ input_file_push ()
|
||||||
if (preprocess)
|
if (preprocess)
|
||||||
saved->app_save = app_push ();
|
saved->app_save = app_push ();
|
||||||
|
|
||||||
input_file_begin (); /* Initialize for new file */
|
/* Initialize for new file. */
|
||||||
|
input_file_begin ();
|
||||||
|
|
||||||
return (char *) saved;
|
return (char *) saved;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +112,7 @@ input_file_pop (arg)
|
||||||
{
|
{
|
||||||
register struct saved_file *saved = (struct saved_file *) 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;
|
f_in = saved->f_in;
|
||||||
file_name = saved->file_name;
|
file_name = saved->file_name;
|
||||||
|
@ -140,7 +136,7 @@ input_file_open (filename, pre)
|
||||||
assert (filename != 0); /* Filename may not be NULL. */
|
assert (filename != 0); /* Filename may not be NULL. */
|
||||||
if (filename[0])
|
if (filename[0])
|
||||||
{ /* We have a file name. Suck it and see. */
|
{ /* We have a file name. Suck it and see. */
|
||||||
f_in = fopen (filename, "r");
|
f_in = fopen (filename, FOPEN_RT);
|
||||||
file_name = filename;
|
file_name = filename;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -157,7 +153,8 @@ input_file_open (filename, pre)
|
||||||
|
|
||||||
c = getc (f_in);
|
c = getc (f_in);
|
||||||
if (c == '#')
|
if (c == '#')
|
||||||
{ /* Begins with comment, may not want to preprocess */
|
{
|
||||||
|
/* Begins with comment, may not want to preprocess. */
|
||||||
c = getc (f_in);
|
c = getc (f_in);
|
||||||
if (c == 'N')
|
if (c == 'N')
|
||||||
{
|
{
|
||||||
|
@ -165,7 +162,7 @@ input_file_open (filename, pre)
|
||||||
if (!strcmp (buf, "O_APP\n"))
|
if (!strcmp (buf, "O_APP\n"))
|
||||||
preprocess = 0;
|
preprocess = 0;
|
||||||
if (!strchr (buf, '\n'))
|
if (!strchr (buf, '\n'))
|
||||||
ungetc ('#', f_in); /* It was longer */
|
ungetc ('#', f_in); /* It was longer. */
|
||||||
else
|
else
|
||||||
ungetc ('\n', f_in);
|
ungetc ('\n', f_in);
|
||||||
}
|
}
|
||||||
|
@ -179,13 +176,14 @@ input_file_open (filename, pre)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close input file. */
|
/* Close input file. */
|
||||||
|
|
||||||
void
|
void
|
||||||
input_file_close ()
|
input_file_close ()
|
||||||
{
|
{
|
||||||
|
/* Don't close a null file pointer. */
|
||||||
if (f_in != NULL)
|
if (f_in != NULL)
|
||||||
{
|
fclose (f_in);
|
||||||
fclose (f_in);
|
|
||||||
} /* don't close a null file pointer */
|
|
||||||
f_in = 0;
|
f_in = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,12 +216,10 @@ input_file_give_next_buffer (where)
|
||||||
|
|
||||||
if (f_in == (FILE *) 0)
|
if (f_in == (FILE *) 0)
|
||||||
return 0;
|
return 0;
|
||||||
/*
|
/* fflush (stdin); could be done here if you want to synchronise
|
||||||
* fflush (stdin); could be done here if you want to synchronise
|
stdin and stdout, for the case where our input file is stdin.
|
||||||
* stdin and stdout, for the case where our input file is stdin.
|
Since the assembler shouldn't do any output to stdout, we
|
||||||
* Since the assembler shouldn't do any output to stdout, we
|
don't bother to synch output and input. */
|
||||||
* don't bother to synch output and input.
|
|
||||||
*/
|
|
||||||
if (preprocess)
|
if (preprocess)
|
||||||
size = do_scrub_chars (input_file_get, where, BUFFER_SIZE);
|
size = do_scrub_chars (input_file_get, where, BUFFER_SIZE);
|
||||||
else
|
else
|
||||||
|
@ -242,5 +238,6 @@ input_file_give_next_buffer (where)
|
||||||
f_in = (FILE *) 0;
|
f_in = (FILE *) 0;
|
||||||
return_value = 0;
|
return_value = 0;
|
||||||
}
|
}
|
||||||
return (return_value);
|
|
||||||
|
return return_value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,17 +183,18 @@ itbl_parse (char *insntbl)
|
||||||
{
|
{
|
||||||
extern FILE *yyin;
|
extern FILE *yyin;
|
||||||
extern int yyparse (void);
|
extern int yyparse (void);
|
||||||
yyin = fopen (insntbl, "r");
|
|
||||||
|
yyin = fopen (insntbl, FOPEN_RT);
|
||||||
if (yyin == 0)
|
if (yyin == 0)
|
||||||
{
|
{
|
||||||
printf ("Can't open processor instruction specification file \"%s\"\n",
|
printf ("Can't open processor instruction specification file \"%s\"\n",
|
||||||
insntbl);
|
insntbl);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
while (yyparse ())
|
||||||
while (yyparse ());
|
;
|
||||||
}
|
|
||||||
fclose (yyin);
|
fclose (yyin);
|
||||||
itbl_have_entries = 1;
|
itbl_have_entries = 1;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -485,7 +485,7 @@ buffer_line (file, line, size)
|
||||||
}
|
}
|
||||||
|
|
||||||
last_open_file_info = file;
|
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)
|
if (last_open_file == NULL)
|
||||||
{
|
{
|
||||||
file->at_end = 1;
|
file->at_end = 1;
|
||||||
|
@ -1121,7 +1121,7 @@ listing_print (name)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
list_file = fopen (name, "w");
|
list_file = fopen (name, FOPEN_WT);
|
||||||
if (list_file != NULL)
|
if (list_file != NULL)
|
||||||
using_stdout = 0;
|
using_stdout = 0;
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* output-file.c - Deal with the output file
|
/* 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.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
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
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to
|
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>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@ -44,14 +45,14 @@ output_file_create (name)
|
||||||
char *name;
|
char *name;
|
||||||
{
|
{
|
||||||
if (name[0] == '-' && name[1] == '\0')
|
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)))
|
else if (!(stdoutput = bfd_openw (name, TARGET_FORMAT)))
|
||||||
{
|
{
|
||||||
as_perror (_("FATAL: Can't create %s"), name);
|
as_perror (_("FATAL: Can't create %s"), name);
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bfd_set_format (stdoutput, bfd_object);
|
bfd_set_format (stdoutput, bfd_object);
|
||||||
#ifdef BFD_ASSEMBLER
|
#ifdef BFD_ASSEMBLER
|
||||||
bfd_set_arch_mach (stdoutput, TARGET_ARCH, TARGET_MACH);
|
bfd_set_arch_mach (stdoutput, TARGET_ARCH, TARGET_MACH);
|
||||||
|
@ -73,14 +74,14 @@ output_file_close (filename)
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
#else
|
#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)
|
if (bfd_close_all_done (stdoutput) == 0)
|
||||||
{
|
{
|
||||||
as_perror (_("FATAL: Can't close %s\n"), filename);
|
as_perror (_("FATAL: Can't close %s\n"), filename);
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
stdoutput = NULL; /* Trust nobody! */
|
stdoutput = NULL; /* Trust nobody! */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BFD_ASSEMBLER
|
#ifndef BFD_ASSEMBLER
|
||||||
|
@ -108,11 +109,12 @@ output_file_create (name)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
stdoutput = fopen (name, "wb");
|
stdoutput = fopen (name, FOPEN_WB);
|
||||||
|
|
||||||
/* Some systems don't grok "b" in fopen modes. */
|
/* Some systems don't grok "b" in fopen modes. */
|
||||||
|
/* XXX - is this still necessary now that we use FOPEN_WB ? */
|
||||||
if (stdoutput == NULL)
|
if (stdoutput == NULL)
|
||||||
stdoutput = fopen (name, "w");
|
stdoutput = fopen (name, FOPEN_W);
|
||||||
|
|
||||||
if (stdoutput == NULL)
|
if (stdoutput == NULL)
|
||||||
{
|
{
|
||||||
|
@ -130,18 +132,21 @@ output_file_close (filename)
|
||||||
as_perror (_("FATAL: Can't close %s"), filename);
|
as_perror (_("FATAL: Can't close %s"), filename);
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
stdoutput = NULL; /* Trust nobody! */
|
|
||||||
|
/* Trust nobody! */
|
||||||
|
stdoutput = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
output_file_append (where, length, filename)
|
output_file_append (where, length, filename)
|
||||||
char *where;
|
char * where;
|
||||||
long length;
|
long length;
|
||||||
char *filename;
|
char * filename;
|
||||||
{
|
{
|
||||||
for (; length; length--, where++)
|
for (; length; length--, where++)
|
||||||
{
|
{
|
||||||
(void) putc (*where, stdoutput);
|
(void) putc (*where, stdoutput);
|
||||||
|
|
||||||
if (ferror (stdoutput))
|
if (ferror (stdoutput))
|
||||||
/* if ( EOF == (putc( *where, stdoutput )) ) */
|
/* if ( EOF == (putc( *where, stdoutput )) ) */
|
||||||
{
|
{
|
||||||
|
@ -153,4 +158,3 @@ output_file_append (where, length, filename)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* end of output-file.c */
|
|
||||||
|
|
18
gas/read.c
18
gas/read.c
|
@ -1,6 +1,6 @@
|
||||||
/* read.c - read a source file -
|
/* read.c - read a source file -
|
||||||
Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
|
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.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
|
@ -4950,7 +4950,7 @@ s_incbin (x)
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
|
|
||||||
/* Try opening absolute path first, then try include dirs. */
|
/* Try opening absolute path first, then try include dirs. */
|
||||||
binfile = fopen (filename, "rb");
|
binfile = fopen (filename, FOPEN_RB);
|
||||||
if (binfile == NULL)
|
if (binfile == NULL)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -4961,7 +4961,7 @@ s_incbin (x)
|
||||||
{
|
{
|
||||||
sprintf (path, "%s/%s", include_dirs[i], filename);
|
sprintf (path, "%s/%s", include_dirs[i], filename);
|
||||||
|
|
||||||
binfile = fopen (path, "rb");
|
binfile = fopen (path, FOPEN_RB);
|
||||||
if (binfile != NULL)
|
if (binfile != NULL)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -4974,6 +4974,8 @@ s_incbin (x)
|
||||||
|
|
||||||
if (binfile)
|
if (binfile)
|
||||||
{
|
{
|
||||||
|
long file_len;
|
||||||
|
|
||||||
register_dependency (path);
|
register_dependency (path);
|
||||||
|
|
||||||
/* Compute the length of the file. */
|
/* Compute the length of the file. */
|
||||||
|
@ -4982,16 +4984,16 @@ s_incbin (x)
|
||||||
as_bad (_("seek to end of .incbin file failed `%s'"), path);
|
as_bad (_("seek to end of .incbin file failed `%s'"), path);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
len = ftell (binfile);
|
file_len = ftell (binfile);
|
||||||
|
|
||||||
/* If a count was not specified use the size of the file. */
|
/* If a count was not specified use the size of the file. */
|
||||||
if (count == 0)
|
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)"),
|
as_bad (_("skip (%ld) + count (%ld) larger than file size (%ld)"),
|
||||||
skip, count, len);
|
skip, count, file_len);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5064,7 +5066,7 @@ s_include (arg)
|
||||||
strcpy (path, include_dirs[i]);
|
strcpy (path, include_dirs[i]);
|
||||||
strcat (path, "/");
|
strcat (path, "/");
|
||||||
strcat (path, filename);
|
strcat (path, filename);
|
||||||
if (0 != (try = fopen (path, "r")))
|
if (0 != (try = fopen (path, FOPEN_RT)))
|
||||||
{
|
{
|
||||||
fclose (try);
|
fclose (try);
|
||||||
goto gotit;
|
goto gotit;
|
||||||
|
|
Loading…
Reference in a new issue