This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
windres: -I
- From: "Dimitrie O. Paun" <dpaun at rogers dot com>
- To: binutils at sources dot redhat dot com
- Date: Sat, 5 Apr 2003 02:20:57 -0500
- Subject: windres: -I
- Organization: DSSD Software Inc.
- Reply-to: dpaun at rogers dot com
OK folks,
This is my patch again, updated to the latest CVS.
Any news of copyright assignment? Will you guys
figure it out when it's done, or will they inform me?
Sorry for all these questions, but I haven't really
been through this process before.
2003-04-05 Dimitrie O. Paun <dpaun at rogers dot com>
* windres.c (format_from_name): make the exit on error
behaviour optional.
(main): Rename the -I option to -J. Introduce -I as synonym
for --include-dir. For backwards compatibility also support the
old -I behaviour, but issue a deprecation warning.
* doc/binutils.texi: Rename -I to -J. Document the new behaviour
of the -I option.
* testsuite/binutils-all/windres/windres.exp: Add test for the
new -J option.
Index: windres.c
===================================================================
RCS file: /cvs/src/src/binutils/windres.c,v
retrieving revision 1.16
diff -u -r1.16 windres.c
--- windres.c 5 Apr 2003 08:21:46 -0000 1.16
+++ windres.c 5 Apr 2003 08:35:21 -0000
@@ -106,8 +106,7 @@
/* 150 isn't special; it's just an arbitrary non-ASCII char value. */
-#define OPTION_INCLUDE_DIR 150
-#define OPTION_PREPROCESSOR (OPTION_INCLUDE_DIR + 1)
+#define OPTION_PREPROCESSOR 150
#define OPTION_USE_TEMP_FILE (OPTION_PREPROCESSOR + 1)
#define OPTION_NO_USE_TEMP_FILE (OPTION_USE_TEMP_FILE + 1)
#define OPTION_YYDEBUG (OPTION_NO_USE_TEMP_FILE + 1)
@@ -116,8 +115,8 @@
{
{"define", required_argument, 0, 'D'},
{"help", no_argument, 0, 'h'},
- {"include-dir", required_argument, 0, OPTION_INCLUDE_DIR},
- {"input-format", required_argument, 0, 'I'},
+ {"include-dir", required_argument, 0, 'I'},
+ {"input-format", required_argument, 0, 'J'},
{"language", required_argument, 0, 'l'},
{"output-format", required_argument, 0, 'O'},
{"preprocessor", required_argument, 0, OPTION_PREPROCESSOR},
@@ -135,7 +134,7 @@
static void res_init PARAMS ((void));
static int extended_menuitems PARAMS ((const struct menuitem *));
-static enum res_format format_from_name PARAMS ((const char *));
+static enum res_format format_from_name PARAMS ((const char *, int));
static enum res_format format_from_filename PARAMS ((const char *, int));
static void usage PARAMS ((FILE *, int));
static int cmp_res_entry PARAMS ((const PTR, const PTR));
@@ -583,8 +582,9 @@
/* Convert a string to a format type, or exit if it can't be done. */
static enum res_format
-format_from_name (name)
+format_from_name (name, exit_on_error)
const char *name;
+ int exit_on_error;
{
const struct format_map *m;
@@ -592,7 +592,7 @@
if (strcasecmp (m->name, name) == 0)
break;
- if (m->name == NULL)
+ if (m->name == NULL && exit_on_error)
{
non_fatal (_("unknown format type `%s'"), name);
fprintf (stderr, _("%s: supported formats:"), program_name);
@@ -699,15 +699,15 @@
fprintf (stream, _(" The options are:\n\
-i --input=<file> Name input file\n\
-o --output=<file> Name output file\n\
- -I --input-format=<format> Specify input format\n\
+ -J --input-format=<format> Specify input format\n\
-O --output-format=<format> Specify output format\n\
-F --target=<target> Specify COFF target\n\
--preprocessor=<program> Program to use to preprocess rc file\n\
- --include-dir=<dir> Include directory when preprocessing rc file\n\
+ -I --include-dir=<dir> Include directory when preprocessing rc file\n\
-D --define <sym>[=<val>] Define SYM when preprocessing rc file\n\
-U --undefine <sym> Undefine SYM when preprocessing rc file\n\
-v --verbose Verbose - tells you what it's doing\n\
- --language=<val> Set language when reading rc file\n\
+ -l --language=<val> Set language when reading rc file\n\
--use-temp-file Use a temporary file instead of popen to read\n\
the preprocessor output\n\
--no-use-temp-file Use popen (default)\n"));
@@ -776,6 +776,7 @@
char *input_filename;
char *output_filename;
enum res_format input_format;
+ enum res_format input_format_tmp;
enum res_format output_format;
char *target;
char *preprocessor;
@@ -812,7 +813,7 @@
language = 0x409; /* LANG_ENGLISH, SUBLANG_ENGLISH_US. */
use_temp_file = 0;
- while ((c = getopt_long (argc, argv, "i:l:o:I:O:F:D:U:rhHvV", long_options,
+ while ((c = getopt_long (argc, argv, "i:l:o:I:J:O:F:D:U:rhHvV", long_options,
(int *) 0)) != EOF)
{
switch (c)
@@ -825,12 +826,12 @@
output_filename = optarg;
break;
- case 'I':
- input_format = format_from_name (optarg);
+ case 'J':
+ input_format = format_from_name (optarg, 1);
break;
case 'O':
- output_format = format_from_name (optarg);
+ output_format = format_from_name (optarg, 1);
break;
case 'F':
@@ -869,7 +870,16 @@
verbose ++;
break;
- case OPTION_INCLUDE_DIR:
+ case 'I':
+ /* for backward compatibility, should be removed in the future */
+ input_format_tmp = format_from_name (optarg, 0);
+ if (input_format_tmp != RES_FORMAT_UNKNOWN)
+ {
+ fprintf (stderr, _("Option -I is deprecated for setting the input format, please use -J instead.\n"));
+ input_format = input_format_tmp;
+ break;
+ }
+
if (preprocargs == NULL)
{
quotedarg = quot (optarg);
Index: doc/binutils.texi
===================================================================
RCS file: /cvs/src/src/binutils/doc/binutils.texi,v
retrieving revision 1.35
diff -u -r1.35 binutils.texi
--- doc/binutils.texi 5 Apr 2003 08:21:47 -0000 1.35
+++ doc/binutils.texi 5 Apr 2003 08:35:27 -0000
@@ -2575,7 +2575,7 @@
non-option argument, then @command{windres} will write to standard output.
@command{windres} can not write a COFF file to standard output.
- at item -I @var{format}
+ at item -J @var{format}
@itemx --input-format @var{format}
The input format to read. @var{format} may be @samp{res}, @samp{rc}, or
@samp{coff}. If no input format is specified, @command{windres} will
@@ -2603,11 +2603,17 @@
to use, including any leading arguments. The default preprocessor
argument is @code{gcc -E -xc-header -DRC_INVOKED}.
+ at item -I @var{directory}
@item --include-dir @var{directory}
Specify an include directory to use when reading an @code{rc} file.
@command{windres} will pass this to the preprocessor as an @option{-I}
option. @command{windres} will also search this directory when looking for
-files named in the @code{rc} file.
+files named in the @code{rc} file. If the argument passed to this command
+matches any of the supported @var{formats} (as descrived in the @option{-J}
+option), it will issue a deprecation warning, and behave just like the
+ at option{-J} option. New programs should not use this behaviour. If a
+directory happens to match a @var{format}, simple prefix it with @samp{./}
+to disable the backward compatibility.
@item -D @var{target}
@itemx --define @var{sym}[= at var{val}]
Index: testsuite/binutils-all/windres/windres.exp
===================================================================
RCS file: /cvs/src/src/binutils/testsuite/binutils-all/windres/windres.exp,v
retrieving revision 1.3
diff -u -r1.3 windres.exp
--- testsuite/binutils-all/windres/windres.exp 27 Jul 2001 16:16:07 -0000 1.3
+++ testsuite/binutils-all/windres/windres.exp 5 Apr 2003 08:35:27 -0000
@@ -81,6 +81,40 @@
setup_xfail *-*
}
+ verbose "$wr -J rc -O res $res tmpdir/$broot.res" 1
+ catch "exec $wr -J rc -O res $res tmpdir/$broot.res" err
+
+ if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "windres/$broot (parse)"
+ continue;
+ }
+ pass "windres/$broot (parse)"
+
+ set rc [open $res]
+ while { [gets $rc line] != -1 } {
+ if ![regexp "^(//|/\*|#)" $line] {
+ break
+ }
+ if [regexp "parse-only" $line] {
+ file delete "tmpdir/$broot.res"
+ set done 1
+ break;
+ }
+ if [regexp "\[xc\]fail *(\[^ \]*)" $line junk sys] {
+ setup_xfail $sys
+ continue;
+ }
+ }
+ if { $done != 0 } {
+ continue;
+ }
+
+ if { "$broot" != "bmpalign" && "$target_xfail" == "yes" } {
+ setup_xfail *-*
+ }
+
verbose "$wr -I rc -O res $res tmpdir/$broot.res" 1
catch "exec $wr -I rc -O res $res tmpdir/$broot.res" err
--
Dimi.