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]

Re: [RFC] windres' -I option


On March 20, 2003 03:51 am, Nick Clifton wrote:
[Chris, I didn't receive your message, please Cc: me as I'm not
 on the binutil list...]

> I would have no objections to the change (and in fact would encourage
> it) provided that the above intelligence was added to the -I option,
> and of course that it was documented in the manual.  If a test case or
> two could be added to the binutils testsuite that would be peachy.

OK, here is the patch again, with updated docs. It implements the 
behaviour as described in my email, which I hope we all agree it's OK.
Unfortunately, I am not at all familiar with your testing framework, 
so I would appreciate some help in that area.

ChangeLog
  Rename the -I option to -J. Introduce -I as synonym for --include-dir.

Index: binutils/windres.c
===================================================================
RCS file: /cvs/src/src/binutils/windres.c,v
retrieving revision 1.13
diff -u -r1.13 windres.c
--- binutils/windres.c	5 May 2002 23:25:27 -0000	1.13
+++ binutils/windres.c	17 Mar 2003 07:14:16 -0000
@@ -110,8 +110,7 @@
 
 #define OPTION_DEFINE 150
 #define OPTION_HELP (OPTION_DEFINE + 1)
-#define OPTION_INCLUDE_DIR (OPTION_HELP + 1)
-#define OPTION_LANGUAGE (OPTION_INCLUDE_DIR + 1)
+#define OPTION_LANGUAGE (OPTION_HELP + 1)
 #define OPTION_PREPROCESSOR (OPTION_LANGUAGE + 1)
 #define OPTION_USE_TEMP_FILE (OPTION_PREPROCESSOR + 1)
 #define OPTION_NO_USE_TEMP_FILE (OPTION_USE_TEMP_FILE + 1)
@@ -122,8 +121,8 @@
 {
   {"define", required_argument, 0, OPTION_DEFINE},
   {"help", no_argument, 0, OPTION_HELP},
-  {"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, OPTION_LANGUAGE},
   {"output-format", required_argument, 0, 'O'},
   {"preprocessor", required_argument, 0, OPTION_PREPROCESSOR},
@@ -140,7 +139,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));
@@ -588,7 +587,7 @@
 /* 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, int exit_on_error)
      const char *name;
 {
   const struct format_map *m;
@@ -597,7 +596,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);
@@ -779,6 +778,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;
@@ -828,12 +828,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':
@@ -868,7 +868,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: binutils/doc/binutils.texi
===================================================================
RCS file: /cvs/src/src/binutils/doc/binutils.texi,v
retrieving revision 1.30
diff -u -r1.30 binutils.texi
--- binutils/doc/binutils.texi	24 Feb 2003 16:20:28 -0000	1.30
+++ binutils/doc/binutils.texi	20 Mar 2003 15:10:43 -0000
@@ -2569,7 +2569,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
@@ -2597,11 +2597,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}]


-- 
Dimi.


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