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ć <cont...@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); ++ ++@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; ++} ++ ++@operations = sort optioncmp @operations; ++@operations = sort optioncmp @operations; ++@options = sort optioncmp @options; ++@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__ -- http://linuxfromscratch.org/mailman/listinfo/patches FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page