Req: Disable I18N/L10N translation for gcc -print-search-dirsoutput.

Ishikawa ishikawa@yk.rim.or.jp
Tue Jul 1 00:05:00 GMT 2003


Zack Weinberg wrote:
> 
> Neil Booth <neil@daikokuya.co.uk> writes:
> 
> >> Request: Disable I18N/L10N translation for gcc -print-search-dirs output.
> >>
> >>      Please don't change the output of
> >>
> >>      gcc -print-search-dirs
> >>
> >>      depending on the LC_ALL environment variable setting.
> >>      That is, keep the output from the modification done
> >>      by I18N/L10N scheme.
> >
> > I disagree.  The script is broken and that is what should be fixed,
> > either by improving its output recognition or by setting the
> > appropriate environment variables so it can reasonably expect
> > the output it is seeking.
> 
> It would probably be a good idea to add more -print options, or simply
> document existing -print options, which print just the one thing that
> a script is looking for, with no tag strings to confuse the issue.
> 
> gcc -print-include-search-dirs
>     -print-lib-search-dirs
>     -print-bin-search-dirs
> 
> Like that.
> 
> zw

--Here is an initial cut for implementing
the suggested new options.

Feedback welcome.

Zack's original proposal.

>gcc -print-include-search-dirs   [[ for include-search-dirs without
>				    the prefix tag
>				    that gets translated. ]]
>	
>    -print-lib-search-dirs       [[ for lib-search dirs ...]
>    -print-bin-search-dirs       [[ for bin-searcha dirs ...]
>
>Like that.

I renamed the first option to "--print-install-dir" since
it seems to be exactly that.

>gcc -print-install-dir         [[ for installed directory without
>			       the prefix tag that gets translated in
>			       I18N/L10 scheme.
>	
>    -print-lib-search-dirs       [[ for lib-search dirs ...]
>    -print-bin-search-dirs       [[ for bin-searcha dirs ...]

After doing this, I noticed that
the output for the latter two lines in --print-search-dirs
have leading "=" sign, which seems a little odd, but
I leave it as it is.

Comment on the choice of 
the option names are welcome.


Execution example.

pushd
/u2/tools/gcc-obj-dir/gcc /u2/tools/gcc-cvs/gcc/gcc
ishikawa@duron$ ./xgcc --print-search-dirs
install: /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/
programs: =/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/3.4/:/usr/lib/gcc/i686-pc-linux-gnu/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/bin/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/bin/
libraries: =/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/:/usr/lib/gcc/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/lib/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/lib/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../:/lib/i686-pc-linux-gnu/3.4/:/lib/:/usr/lib/i686-pc-linux-gnu/3.4/:/usr/lib/
ishikawa@duron$ ./xgcc --print-install-dir
/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/
ishikawa@duron$ ./xgcc --print-lib-search-dir
=/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/:/usr/lib/gcc/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/lib/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/lib/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/lib/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../:/lib/i686-pc-linux-gnu/3.4/:/lib/:/usr/lib/i686-pc-linux-gnu/3.4/:/usr/lib/
ishikawa@duron$ ./xgcc --print-bin-search-dir
=/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/3.4/:/usr/lib/gcc/i686-pc-linux-gnu/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/3.4/:/u2/tools/gcc-obj-dir/gcc/../lib/gcc-lib/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/bin/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/bin/i686-pc-linux-gnu/3.4/:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/../../../i686-pc-linux-gnu/bin/
ishikawa@duron$ 


PS:
After saying all this, I would rather see the following code 

  if (print_search_dirs)
    {
      printf (_("install: %s%s\n"), standard_exec_prefix, machine_suffix);
      printf (_("programs: %s\n"), build_search_list (&exec_prefixes, "", 0));
      printf (_("libraries: %s\n"), build_search_list (&startfile_prefixes, "", 0));
      return (0);
    }

turned into

  if (print_search_dirs)
    {
      printf ("install: %s%s\n", standard_exec_prefix, machine_suffix);
      printf ("programs: %s\n", build_search_list (&exec_prefixes, "", 0));
      printf ("libraries: %s\n", build_search_list (&startfile_prefixes, "", 0));
      return (0);
    }

(note the no translation)
since the output for this option is more likely
to be fed into other programs and not read by humans.
(And what is the cost of understanding English tag 'install',
"programs", and "libraries" anyway for the intended audience.)
[If the above change is acceptable, this whole patch I am posting
is not necessary.]

Patch is below.
 
*** gcc.c.save	Tue Jul  1 07:29:28 2003
--- gcc.c	Tue Jul  1 08:52:00 2003
***************
*** 149,154 ****
--- 149,159 ----
     programs, libraries, etc.  */
  
  static int print_search_dirs;
+ /* Flags similar to indicate the restricted subset of print_search_dir option
+  */
+ static int print_include_search_dirs;
+ static int print_lib_search_dirs;
+ static int print_bin_search_dirs;
  
  /* Flag saying to print the full filename of this file
     as found through our usual search mechanism.  */
***************
*** 1065,1071 ****
     {"--pipe", "-pipe", 0},
     {"--prefix", "-B", "a"},
     {"--preprocess", "-E", 0},
!    {"--print-search-dirs", "-print-search-dirs", 0},
     {"--print-file-name", "-print-file-name=", "aj"},
     {"--print-libgcc-file-name", "-print-libgcc-file-name", 0},
     {"--print-missing-file-dependencies", "-MG", 0},
--- 1070,1081 ----
     {"--pipe", "-pipe", 0},
     {"--prefix", "-B", "a"},
     {"--preprocess", "-E", 0},
!    {"--print-search-dirs",     "-print-search-dirs", 0},
! 
!    {"--print-install-dir",     "-print-install-dir", 0},
!    {"--print-lib-search-dirs", "-print-lib-search-dirs", 0},
!    {"--print-bin-search-dirs", "-print-bin-search-dirs", 0},
! 
     {"--print-file-name", "-print-file-name=", "aj"},
     {"--print-libgcc-file-name", "-print-libgcc-file-name", 0},
     {"--print-missing-file-dependencies", "-MG", 0},
***************
*** 3032,3037 ****
--- 3042,3053 ----
    fputs (_("  -dumpversion             Display the version of the compiler\n"), stdout);
    fputs (_("  -dumpmachine             Display the compiler's target processor\n"), stdout);
    fputs (_("  -print-search-dirs       Display the directories in the compiler's search path\n"), stdout);
+ 
+   fputs (_("  -print-install-dir       Display the install directoriy [no I18N/L10N tag at the beginning.]\n"), stdout);
+   fputs (_("  -print-lib-search-dirs       Display the lib search directories [no I18N/L10N tag at the beginning.]\n"), stdout);
+   fputs (_("  -print-bin-search-dirs       Display the binary search directories [no I18N/L10N tag at the beginning.]\n"), stdout);
+ 
+ 
    fputs (_("  -print-libgcc-file-name  Display the name of the compiler's companion library\n"), stdout);
    fputs (_("  -print-file-name=<lib>   Display the full path to library <lib>\n"), stdout);
    fputs (_("  -print-prog-name=<prog>  Display the full path to compiler component <prog>\n"), stdout);
***************
*** 3446,3451 ****
--- 3462,3478 ----
  	}
        else if (! strcmp (argv[i], "-print-search-dirs"))
  	print_search_dirs = 1;
+ 
+       else if (! strcmp (argv[i], "-print-install-dir"))
+ 	print_include_search_dirs = 1;
+ 
+       else if (! strcmp (argv[i], "-print-lib-search-dirs"))
+ 	print_lib_search_dirs = 1;
+ 
+       else if (! strcmp (argv[i], "-print-bin-search-dirs"))
+ 	print_bin_search_dirs = 1;
+ 
+ 
        else if (! strcmp (argv[i], "-print-libgcc-file-name"))
  	print_file_name = "libgcc.a";
        else if (! strncmp (argv[i], "-print-file-name=", 17))
***************
*** 3909,3914 ****
--- 3936,3950 ----
  	;
        else if (! strcmp (argv[i], "-print-search-dirs"))
  	;
+ 
+       else if (! strcmp (argv[i], "-print-install-dir"))
+ 	;
+       else if (! strcmp (argv[i], "-print-lib-search-dirs"))
+ 	;
+       else if (! strcmp (argv[i], "-print-bin-search-dirs"))
+ 	;
+ 
+ 
        else if (! strcmp (argv[i], "-print-libgcc-file-name"))
  	;
        else if (! strncmp (argv[i], "-print-file-name=", 17))
***************
*** 6272,6277 ****
--- 6308,6332 ----
        return (0);
      }
  
+   if (print_include_search_dirs)
+     {
+       printf (_("%s%s\n"), standard_exec_prefix, machine_suffix);      
+       return (0);
+     }
+ 
+   if (print_lib_search_dirs)
+     {
+       printf (_("%s\n"), build_search_list (&startfile_prefixes, "", 0));
+       return (0);
+     }
+ 
+   if (print_bin_search_dirs)
+     {
+       printf (_("%s\n"), build_search_list (&exec_prefixes, "", 0));
+       return (0);
+     }
+ 
+ 
    if (print_file_name)
      {
        printf ("%s\n", find_file (print_file_name));
 
int main(void){int j=2003;/*(c)2003 cishikawa. */
char t[] ="<CI> @abcdefghijklmnopqrstuvwxyz.,\n\"";
char *i ="g>qtCIuqivb,gCwe\np@.ietCIuqi\"tqkvv is>dnamz";
while(*i)((j+=strchr(t,*i++)-(int)t),(j%=sizeof t-1),
(putchar(t[j])));return 0;}/* under GPL */



More information about the Gcc mailing list