summaryrefslogtreecommitdiff
blob: fcf91f71d376490b91a7ea6abdf0e0696903b3f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
add support for xz

http://bugs.gentoo.org/302380

--- a/src/makewhatis.sh
+++ b/src/makewhatis.sh
@@ -230,7 +230,7 @@
 	    find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | $AWK '
 
 	    function readline() {
-              if (use_zcat || use_bzcat || use_lzcat) {
+              if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
 		result = (pipe_cmd | getline);
 		if (result < 0) {
 		  print "Pipe error: " pipe_cmd " " ERRNO > "/dev/stderr";
@@ -245,7 +245,7 @@
 	    }
 	    
 	    function closeline() {
-              if (use_zcat || use_bzcat || use_lzcat) {
+              if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
 		return close(pipe_cmd);
 	      } else {
 		return close(filename);
@@ -266,7 +266,9 @@
 		use_bzcat = match(filename,"\\.bz2");
               if(!use_bzcat)
                 use_lzcat = match(filename,"\\.lzma");
-              if (use_zcat || use_bzcat || use_lzcat ) {
+              if(!use_lzcat)
+                use_xzcat = match(filename,"\\.xz");
+              if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
 		filename_no_gz = substr(filename, 0, RSTART - 1);
 	      } else {
 		filename_no_gz = filename;
@@ -279,13 +281,15 @@
 		actual_section = section;
 	      }
 	      sub(/\..*/, "", progname);
-              if (use_zcat || use_bzcat || use_lzcat) {
+              if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
 		if (use_zcat) {
 		  pipe_cmd = "zcat \"" filename "\"";
                 } else if (use_bzcat) {
 		  pipe_cmd = "bzcat \"" filename "\"";
-                } else {
+                } else if (use_lzcat) {
                   pipe_cmd = "lzcat \"" filename "\"";
+                } else {
+                  pipe_cmd = "xzcat \"" filename "\"";
                 }
 		# try to avoid suspicious stuff
 		if (filename ~ /[;&|`$(]/) {