* resrc.c: (read_rc_file): Add include path of user passed rc input file.

* windres.c: (windres_add_include_dir): New.
  (main): Use of windres_add_include_dir.
* windres.h: (windres_add_include_dir): Add prototype.
This commit is contained in:
Nick Clifton 2007-07-05 09:51:30 +00:00
parent 9b201bb5e5
commit c6998d15d5
4 changed files with 53 additions and 11 deletions

View File

@ -1,3 +1,11 @@
2007-07-05 Kai Tietz <kai.tietz@onevision.com>
* resrc.c: (read_rc_file): Add include path of user passed rc
input file.
* windres.c: (windres_add_include_dir): New.
(main): Use of windres_add_include_dir.
* windres.h: (windres_add_include_dir): Add prototype.
2007-07-05 Alan Modra <amodra@bigpond.net.au> 2007-07-05 Alan Modra <amodra@bigpond.net.au>
* doc/binutils.texi (size): Document --common. * doc/binutils.texi (size): Document --common.

View File

@ -436,6 +436,35 @@ read_rc_file (const char *filename, const char *preprocessor,
char *cmd; char *cmd;
const char *fnquotes = (filename_need_quotes (filename) ? "\"" : ""); const char *fnquotes = (filename_need_quotes (filename) ? "\"" : "");
/* Setup the default resource import path taken from input file. */
if (strchr (filename, '/') != NULL || strchr (filename, '\\') != NULL)
{
char *e, *c;
if (filename[0] == '/'
|| filename[0] == '\\'
|| filename[1] == ':')
e = c = xstrdup (filename);
else
{
e = c = xmalloc (strlen (filename) + 3);
sprintf (c, "./%s", filename);
}
e += strlen (c);
while (e > c && (e[-1] != '\\' && e[-1] != '/'))
{
--e;
e[0] = 0;
}
/* Cut off trailing slash. */
--e;
e[0] = 0;
while ((e = strchr (c, '\\')) != NULL)
*e = '/';
windres_add_include_dir (e);
}
istream_type = (use_temp_file) ? ISTREAM_FILE : ISTREAM_PIPE; istream_type = (use_temp_file) ? ISTREAM_FILE : ISTREAM_PIPE;
if (preprocargs == NULL) if (preprocargs == NULL)

View File

@ -760,6 +760,20 @@ static const struct option long_options[] =
{0, no_argument, 0, 0} {0, no_argument, 0, 0}
}; };
void
windres_add_include_dir (const char *p)
{
struct include_dir *n, **pp;
n = xmalloc (sizeof *n);
n->next = NULL;
n->dir = (char * ) p;
for (pp = &include_dirs; *pp != NULL; pp = &(*pp)->next)
;
*pp = n;
}
/* This keeps gcc happy when using -Wmissing-prototypes -Wstrict-prototypes. */ /* This keeps gcc happy when using -Wmissing-prototypes -Wstrict-prototypes. */
int main (int, char **); int main (int, char **);
@ -926,17 +940,7 @@ main (int argc, char **argv)
preprocargs = n; preprocargs = n;
} }
{ windres_add_include_dir (optarg);
struct include_dir *n, **pp;
n = (struct include_dir *) xmalloc (sizeof *n);
n->next = NULL;
n->dir = optarg;
for (pp = &include_dirs; *pp != NULL; pp = &(*pp)->next)
;
*pp = n;
}
break; break;

View File

@ -115,6 +115,7 @@ extern rc_ver_stringinfo *append_verval (rc_ver_stringinfo *, const unichar *, c
extern rc_ver_varinfo *append_vertrans (rc_ver_varinfo *, rc_uint_type, rc_uint_type); extern rc_ver_varinfo *append_vertrans (rc_ver_varinfo *, rc_uint_type, rc_uint_type);
extern bfd *windres_open_as_binary (const char *, int); extern bfd *windres_open_as_binary (const char *, int);
extern void windres_add_include_dir (const char *);
extern int wr_printcomment (FILE *, const char *, ...); extern int wr_printcomment (FILE *, const char *, ...);
extern int wr_print (FILE *, const char *, ...); extern int wr_print (FILE *, const char *, ...);