[lfs-patches] r2721 - trunk/tar

igor at higgs.linuxfromscratch.org igor at higgs.linuxfromscratch.org
Sat Aug 31 09:23:43 PDT 2013


Author: igor
Date: Sat Aug 31 09:23:43 2013
New Revision: 2721

Log:
tar man page patch

Added:
   trunk/tar/tar-1.26-manpage-1.patch

Added: trunk/tar/tar-1.26-manpage-1.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/tar/tar-1.26-manpage-1.patch	Sat Aug 31 09:23:43 2013	(r2721)
@@ -0,0 +1,332 @@
+Submitted By:            Igor Živković <contact at igor-zivkovic.from.hr>
+Date:                    2013-08-31
+Initial Package Version: 1.26
+Upstream Status:         Unknown
+Origin:                  Debian
+Description:             Makes tar man page from src/tar.c
+                         Usage: perl tarman > /usr/share/man/man1/tar.1
+
+diff -Naur tar-1.26.orig/tarman tar-1.26/tarman
+--- tar-1.26.orig/tarman	1970-01-01 01:00:00.000000000 +0100
++++ tar-1.26/tarman	2013-08-31 18:19:11.938351028 +0200
+@@ -0,0 +1,320 @@
++#!/usr/bin/env perl
++
++use strict;
++
++my $t = "".localtime(time);
++my $datestr = substr($t,4,3)." ".substr($t,8,2).", ".substr($t,20,4);
++
++ at ARGV=qw(src/tar.c);
++my $mode;
++my @operations;
++my $lastoperation;
++my @options;
++my @formats;
++my @short;
++my $examples;
++my $saw_format;
++my @env_vars;
++while (<>) {
++	my $nflag = 0;
++	chomp;
++# print "$mode: $_\n";
++	if (/getenv.*"/) {
++		next if defined($mode);
++		my @c1 = split('"');
++		if ($#c1 > 0) {
++			push @env_vars, $c1[1];
++		}
++	}
++	if (/Main operation mode:/) {
++		$mode = 1;
++		next;
++	}
++	if (/Operation modifiers:/) {
++		$mode = 2;
++		next;
++	}
++	if (/Examples:/) {
++		$mode = 3;
++		next;
++	}
++	if (/define GRID/) {
++		$mode = 2;
++	}
++	if (/undef GRID/) {
++		undef $lastoperation;
++		undef $mode;
++		next;
++	}
++	if ($mode == 1 || $mode == 2) {
++		if (/{"/) {	# }
++			my @j = split(',');
++			my @c1 = split('"', $j[0]);
++			if (/OPTION_ALIAS/) {
++				next unless defined($lastoperation);
++				push @{$$lastoperation{'alias'} }, $c1[1];
++				next;
++			}
++			my %newhash = ();
++			$lastoperation = \%newhash;
++			my $name = $c1[1];
++			if ($name =~ /^  /) {
++				$name =~ s/^  */format=/;
++				push @formats, $lastoperation;
++			} elsif ($mode == 1) {
++				push @operations, $lastoperation;
++			} else {
++				push @options, $lastoperation;
++			}
++			$newhash{'name'} = $name;
++			if ($mode == 2 && $name eq 'format') {
++				$saw_format = $lastoperation;
++			}
++			my @c2 = split("'", $j[1]);
++			if ($#c2 > 0) {
++				$newhash{'short'} = $c2[1];
++				push @short, $c2[1] if ($mode == 1);
++			}
++			if ($j[2] =~ /N_/) {
++				$nflag = 1;
++			}
++		}
++		if (/N_/) {
++			next unless defined($lastoperation);
++			my $nrest = $_;
++			$nrest =~ s/.*N_//;
++			my @c3 = split('"', $nrest);
++			if ($#c3 > 0) {
++				if ($nflag) {
++					$$lastoperation{'operand'} .= $c3[1];
++				} else {
++					$$lastoperation{'description'} .= $c3[1];
++				}
++			}
++		}
++	}
++	if ($mode == 3 ) {
++		my $j = $_;
++		$j =~ s/\\n.*//;
++		my ($c1, $c2) = split('#', $j, 2);
++		$c1 =~ s/  *$//;
++		$c1 =~ s/^  *//;
++$c1 =~ s/-/\\-/g;
++		$c2 =~ s/^  *//;
++$examples .= <<".";
++$c2
++.Bd -literal -offset indent -compact
++$c1
++.Ed
++.
++		# (
++		if (/"\)/) {
++			undef $mode;
++		}
++	}
++}
++
++# for my $q ( @operations) {
++# 	print "\nshort=".$$q{'short'}."\n";
++# 	print "name=".$$q{'name'}."\n";
++# 	print "desc=".$$q{'description'}."\n";
++# 	if (defined($$q{'alias'})) {
++# 		print "alias=".join(',',@{ $$q{'alias'}})."\n";
++# 	}
++# }
++
++sub long2nroff {
++	my $f = shift;
++	if ($f !~ /^-/) {
++		$f = "Fl -$f";
++	}
++	$f =~ s/-/\\-/g;
++	return $f;
++}
++
++sub format_options
++{
++	my $h = shift;
++	my $r;
++	for my $q ( @$h ) {
++		$r .= ".It";
++		my @functions;
++		push @functions, " Fl ".$$q{'short'} if defined($$q{'short'});
++		push @functions, " ".long2nroff($$q{'name'});
++		push @functions, join(' ', '', map {long2nroff $_} @{ $$q{'alias'} })
++			if defined($$q{'alias'});
++		$r .= join(' ,', @functions);
++		if (defined($$q{'operand'})) {
++			if ($#functions > 0) {
++				$r .= " ";
++			} else {
++				$r .= " Ns \\= Ns ";
++			}
++			$r .= "Ar ".$$q{'operand'};
++		}
++		$r .= "\n".$$q{'description'}."\n";
++		$r .= $$q{'extra'};
++	}
++	return $r;
++}
++
++sub optionkeyword
++{
++	my $h = shift;
++	my $k = $$h{'short'};
++	$k = $$h{'name'} if !defined($k);
++	my $l = $k;
++	if ($l =~ s/^no-//) {
++		$l .= "-no";
++	}
++	return ($l,$k);
++}
++
++sub optioncmp
++{
++	my ($x1, $x2) = optionkeyword($a);
++	my ($y1, $y2) = optionkeyword($b);
++	my $r = lc($x1) cmp lc($y1);
++	return $r if $r;
++	$r = $y1 cmp $x1;
++	return $r if $r;
++	return $x2 cmp $y2;
++}
++
++ at operations = sort optioncmp @operations;
++ at operations = sort optioncmp @operations;
++ at options = sort optioncmp @options;
++ at formats = sort optioncmp @formats;
++
++if ($#formats >= 0 && !$saw_format) {
++	print STDERR "FIXME: saw --format=X but no root --format!\n";
++	exit(1);
++}
++
++my $function_letters;
++my $short_letters = join('', sort @short);
++my $option_letters;
++my $format_letters;
++my $command_string = <<".";
++.Nm tar
++.
++$command_string .= ".Oo Fl Oc";
++my $env_variables;
++my %env_description = (
++'SIMPLE_BACKUP_SUFFIX' => <<".",
++Backup prefix to use when extracting, if
++.Fl \\-suffix
++is not specified.
++The backup suffix defaults to `~' if neither is specified.
++.
++'TAPE' => <<".",
++Device or file to use for the archive if 
++.Fl \\-file
++is not specified.
++If this environment variable is unset, use stdin or stdout instead.
++.
++'TAR_OPTIONS' => <<".",
++Options to prepend to those specified on the command line, separated by
++whitespace.  Embedded backslashes may be used to escape whitespace or
++backslashes within an option.
++.
++);
++my $sep = "";
++for my $q ( @operations) {
++	$command_string .= " Cm";
++	$command_string .= $sep;
++	$command_string .= " ".$$q{'short'} if defined($$q{'short'});
++	$command_string .= " ".long2nroff($$q{'name'});
++	if (defined($$q{'alias'})) {
++		my $t = join(' ', '', map{long2nroff $_} @{ $$q{'alias'} });
++		$t =~ s/ Fl / /g;
++		$command_string .= $t;
++	}
++	$sep = " \\||\\|";
++}
++$function_letters = ".Bl -tag -width flag\n";
++$function_letters .= format_options(\@operations);
++$function_letters .= ".El";
++if ($#formats >= 0) {
++	$format_letters = ".Bl -tag -width flag\n";
++	$format_letters .= format_options(\@formats);
++	$format_letters .= ".El\n";
++	$$saw_format{'extra'} = $format_letters;
++}
++### Ar Cm Ic Li Nm Op Pa Va
++$option_letters = ".Bl -tag -width flag\n";
++$option_letters .= format_options(\@options);
++$option_letters .= ".El";
++$env_variables .= ".Bl -tag -width Ds\n";
++for my $q ( @env_vars) {
++	$env_variables .= ".It Ev $q\n";
++	$env_variables .= $env_description{$q};
++}
++$env_variables .= ".El";
++
++$examples =~ s/\n$//;
++$function_letters =~ s/\n$//;
++$option_letters =~ s/\n$//;
++$env_variables =~ s/\n$//;
++print <<".";
++.\\" generated by script on $t
++.Dd $datestr
++.Dt TAR 1
++.Sh NAME
++.Nm tar
++.Nd The GNU version of the tar archiving utility
++.Sh SYNOPSIS
++$command_string
++.Op Ar options
++.Op Ar pathname ...
++.Sh DESCRIPTION
++.Nm Tar
++stores and extracts files from a tape or disk archive.
++.Pp
++The first argument to
++tar
++should be a function; either one of the letters
++.Cm $short_letters ,
++or one of the long function names.
++A function letter need not be prefixed with ``\\-'', and may be combined
++with other single-letter options.
++A long function name must be prefixed with
++.Cm \\\\-\\\\- .
++Some options take a parameter; with the single-letter form
++these must be given as separate arguments.
++With the long form, they may be given by appending
++.Cm = Ns Ar value
++to the option.
++.Sh FUNCTION LETTERS
++Main operation mode:
++$function_letters
++.Sh OTHER OPTIONS
++Operation modifiers:
++$option_letters
++.Sh ENVIRONMENT
++The behavior of tar is controlled by the following environment variables,
++among others:
++$env_variables
++.Sh EXAMPLES
++$examples
++.Sh SEE ALSO
++.\\" libarchive
++.Xr tar 5 ,
++.\\" man-pages
++.Xr symlink 7 ,
++.Xr rmt 8
++.Sh HISTORY
++The
++.Nm tar
++command appeared in
++.At v7 .
++.Sh BUGS
++The GNU folks, in general, abhor man pages, and create info documents instead.
++Unfortunately, the info document describing tar is licensed under the GFDL with
++invariant cover texts, which makes it impossible to include any text
++from that document in this man page.
++Most of the text in this document was automatically extracted from the usage
++text in the source.
++It may not completely describe all features of the program.
++.
++__END__



More information about the patches mailing list