This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

windres: -I


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]