[tex-live] xindy doesn't work on windows

Akira Kakuto kakuto at fuk.kindai.ac.jp
Sat Aug 25 12:05:53 CEST 2012


Dear Ulrike,

I've committed the following change, r27520.
It is working fine here.
Thanks,
Akira

--- texmf/scripts/xindy/xindy.pl	Wed Aug 22 08:25:34 2012
+++ xindy.pl	Sat Aug 25 18:36:55 2012
@@ -348,6 +348,17 @@
 
 our ($lib_dir, $modules_dir);
 
+# xindy-lisp.exe for Windows seems to be unable to interpret the short-name
+# format which is a default for the variables TEMP and TMP in Windows OS.
+# As a workaround, we create temporary files in the current directory
+# in xindy on Windows.
+
+if ( $is_w32 ) {
+use Env qw(TMPDIR);
+Env::import();
+$TMPDIR = ".";
+}
+
 # We have different installation structures for TeX-Live and a
 # standalone installation. In TeX-Live, the user command is a symlink
 # in some bin directory, and the actual script is in the library
@@ -643,6 +654,7 @@
 sub create_raw_index () {
     my ($output, $outfile) = tempfile();
     push (@temp_files, $outfile);
+    $outfile=quotify($outfile);
     while ( <> ) {
 	print $output $_;
     }
@@ -661,9 +673,8 @@
 sub filter_index ( $$ ) {
     my ($filter, $input) = @_;
     my $output = tmpnam();
-    $output=quotify($output);
-    $input=quotify($input);
     push (@temp_files, $output);
+    $output=quotify($output);
     print "Running filter: $filter <$input >$output\n"  if $verbose;
     system "$filter <$input >$output";
     print "filtered xindy input file: $output\n"  if $debug{script};
@@ -739,13 +750,13 @@
 	my $sf;
 	($sf, $style_file) = tempfile();
 	push (@temp_files, $style_file);
+	$style_file=quotify($style_file);
 	foreach my $module ( @modules ) {
 	    print $sf "(require \"$module\")\n";
 	}
 	close ($sf);
     }
 
-    $style_file = quotify($style_file);
     $outfile = quotify($outfile);
     $logging = ':logfile ' . quotify($logfile)  if $logfile;
     $tracing = ':markup-trace :on'  if $debug{markup};
@@ -781,6 +792,7 @@
     } elsif ($is_w32) {
 	my ($output, $outfile) = tempfile();
 	push (@temp_files, $outfile);
+	$outfile=quotify($outfile);
 	print $output $xindy_exp;
 	close ($output);
 	print "xindy startup file: $outfile\n" if $debug{script};



More information about the tex-live mailing list