|
Line
Link Here
|
| 0 |
-- app-arch/tar/files/tarman |
0 |
++ app-arch/tar/files/tarman |
|
Line 0
Link Here
|
| 0 |
-- app-arch/tar/tar-1.27.ebuild |
1 |
# |
|
|
2 |
# tarman - make tar man page from src/tar.c |
| 3 |
# some text cribbed from debian tar man page |
| 4 |
# |
| 5 |
|
| 6 |
use strict; |
| 7 |
|
| 8 |
my $t = "".localtime(time); |
| 9 |
my $datestr = substr($t,4,3)." ".substr($t,8,2).", ".substr($t,20,4); |
| 10 |
|
| 11 |
@ARGV=qw(src/tar.c); |
| 12 |
my $mode; |
| 13 |
my @operations; |
| 14 |
my $lastoperation; |
| 15 |
my @options; |
| 16 |
my @formats; |
| 17 |
my @short; |
| 18 |
my $examples; |
| 19 |
my $saw_format; |
| 20 |
my @env_vars; |
| 21 |
while (<>) { |
| 22 |
my $nflag = 0; |
| 23 |
chomp; |
| 24 |
# print "$mode: $_\n"; |
| 25 |
if (/getenv.*"/) { |
| 26 |
next if defined($mode); |
| 27 |
my @c1 = split('"'); |
| 28 |
if ($#c1 > 0) { |
| 29 |
push @env_vars, $c1[1]; |
| 30 |
} |
| 31 |
} |
| 32 |
if (/Main operation mode:/) { |
| 33 |
$mode = 1; |
| 34 |
next; |
| 35 |
} |
| 36 |
if (/Operation modifiers:/) { |
| 37 |
$mode = 2; |
| 38 |
next; |
| 39 |
} |
| 40 |
if (/Examples:/) { |
| 41 |
$mode = 3; |
| 42 |
next; |
| 43 |
} |
| 44 |
if (/define GRID/) { |
| 45 |
$mode = 2; |
| 46 |
} |
| 47 |
if (/undef GRID/) { |
| 48 |
undef $lastoperation; |
| 49 |
undef $mode; |
| 50 |
next; |
| 51 |
} |
| 52 |
if ($mode == 1 || $mode == 2) { |
| 53 |
if (/{"/) { # } |
| 54 |
my @j = split(','); |
| 55 |
my @c1 = split('"', $j[0]); |
| 56 |
if (/OPTION_ALIAS/) { |
| 57 |
next unless defined($lastoperation); |
| 58 |
push @{$$lastoperation{'alias'} }, $c1[1]; |
| 59 |
next; |
| 60 |
} |
| 61 |
my %newhash = (); |
| 62 |
$lastoperation = \%newhash; |
| 63 |
my $name = $c1[1]; |
| 64 |
if ($name =~ /^ /) { |
| 65 |
$name =~ s/^ */format=/; |
| 66 |
push @formats, $lastoperation; |
| 67 |
} elsif ($mode == 1) { |
| 68 |
push @operations, $lastoperation; |
| 69 |
} else { |
| 70 |
push @options, $lastoperation; |
| 71 |
} |
| 72 |
$newhash{'name'} = $name; |
| 73 |
if ($mode == 2 && $name eq 'format') { |
| 74 |
$saw_format = $lastoperation; |
| 75 |
} |
| 76 |
my @c2 = split("'", $j[1]); |
| 77 |
if ($#c2 > 0) { |
| 78 |
$newhash{'short'} = $c2[1]; |
| 79 |
push @short, $c2[1] if ($mode == 1); |
| 80 |
} |
| 81 |
if ($j[2] =~ /N_/) { |
| 82 |
$nflag = 1; |
| 83 |
} |
| 84 |
} |
| 85 |
if (/N_/) { |
| 86 |
next unless defined($lastoperation); |
| 87 |
my $nrest = $_; |
| 88 |
$nrest =~ s/.*N_//; |
| 89 |
my @c3 = split('"', $nrest); |
| 90 |
if ($#c3 > 0) { |
| 91 |
if ($nflag) { |
| 92 |
$$lastoperation{'operand'} .= $c3[1]; |
| 93 |
} else { |
| 94 |
$$lastoperation{'description'} .= $c3[1]; |
| 95 |
} |
| 96 |
} |
| 97 |
} |
| 98 |
} |
| 99 |
if ($mode == 3 ) { |
| 100 |
my $j = $_; |
| 101 |
$j =~ s/\\n.*//; |
| 102 |
my ($c1, $c2) = split('#', $j, 2); |
| 103 |
$c1 =~ s/ *$//; |
| 104 |
$c1 =~ s/^ *//; |
| 105 |
$c1 =~ s/-/\\-/g; |
| 106 |
$c2 =~ s/^ *//; |
| 107 |
$examples .= <<"."; |
| 108 |
$c2 |
| 109 |
.Bd -literal -offset indent -compact |
| 110 |
$c1 |
| 111 |
.Ed |
| 112 |
. |
| 113 |
# ( |
| 114 |
if (/"\)/) { |
| 115 |
undef $mode; |
| 116 |
} |
| 117 |
} |
| 118 |
} |
| 119 |
|
| 120 |
# for my $q ( @operations) { |
| 121 |
# print "\nshort=".$$q{'short'}."\n"; |
| 122 |
# print "name=".$$q{'name'}."\n"; |
| 123 |
# print "desc=".$$q{'description'}."\n"; |
| 124 |
# if (defined($$q{'alias'})) { |
| 125 |
# print "alias=".join(',',@{ $$q{'alias'}})."\n"; |
| 126 |
# } |
| 127 |
# } |
| 128 |
|
| 129 |
sub long2nroff { |
| 130 |
my $f = shift; |
| 131 |
if ($f !~ /^-/) { |
| 132 |
$f = "Fl -$f"; |
| 133 |
} |
| 134 |
$f =~ s/-/\\-/g; |
| 135 |
return $f; |
| 136 |
} |
| 137 |
|
| 138 |
sub format_options |
| 139 |
{ |
| 140 |
my $h = shift; |
| 141 |
my $r; |
| 142 |
for my $q ( @$h ) { |
| 143 |
$r .= ".It"; |
| 144 |
my @functions; |
| 145 |
push @functions, " Fl ".$$q{'short'} if defined($$q{'short'}); |
| 146 |
push @functions, " ".long2nroff($$q{'name'}); |
| 147 |
push @functions, join(' ', '', map {long2nroff $_} @{ $$q{'alias'} }) |
| 148 |
if defined($$q{'alias'}); |
| 149 |
$r .= join(' ,', @functions); |
| 150 |
if (defined($$q{'operand'})) { |
| 151 |
if ($#functions > 0) { |
| 152 |
$r .= " "; |
| 153 |
} else { |
| 154 |
$r .= " Ns \\= Ns "; |
| 155 |
} |
| 156 |
$r .= "Ar ".$$q{'operand'}; |
| 157 |
} |
| 158 |
$r .= "\n".$$q{'description'}."\n"; |
| 159 |
$r .= $$q{'extra'}; |
| 160 |
} |
| 161 |
return $r; |
| 162 |
} |
| 163 |
|
| 164 |
sub optionkeyword |
| 165 |
{ |
| 166 |
my $h = shift; |
| 167 |
my $k = $$h{'short'}; |
| 168 |
$k = $$h{'name'} if !defined($k); |
| 169 |
my $l = $k; |
| 170 |
if ($l =~ s/^no-//) { |
| 171 |
$l .= "-no"; |
| 172 |
} |
| 173 |
return ($l,$k); |
| 174 |
} |
| 175 |
|
| 176 |
sub optioncmp |
| 177 |
{ |
| 178 |
my ($x1, $x2) = optionkeyword($a); |
| 179 |
my ($y1, $y2) = optionkeyword($b); |
| 180 |
my $r = lc($x1) cmp lc($y1); |
| 181 |
return $r if $r; |
| 182 |
$r = $y1 cmp $x1; |
| 183 |
return $r if $r; |
| 184 |
return $x2 cmp $y2; |
| 185 |
} |
| 186 |
|
| 187 |
@operations = sort optioncmp @operations; |
| 188 |
@operations = sort optioncmp @operations; |
| 189 |
@options = sort optioncmp @options; |
| 190 |
@formats = sort optioncmp @formats; |
| 191 |
|
| 192 |
if ($#formats >= 0 && !$saw_format) { |
| 193 |
print STDERR "FIXME: saw --format=X but no root --format!\n"; |
| 194 |
exit(1); |
| 195 |
} |
| 196 |
|
| 197 |
my $function_letters; |
| 198 |
my $short_letters = join('', sort @short); |
| 199 |
my $option_letters; |
| 200 |
my $format_letters; |
| 201 |
my $command_string = <<"."; |
| 202 |
.Nm tar |
| 203 |
. |
| 204 |
$command_string .= ".Oo Fl Oc"; |
| 205 |
my $env_variables; |
| 206 |
my %env_description = ( |
| 207 |
'SIMPLE_BACKUP_SUFFIX' => <<".", |
| 208 |
Backup prefix to use when extracting, if |
| 209 |
.Fl \\-suffix |
| 210 |
is not specified. |
| 211 |
The backup suffix defaults to `~' if neither is specified. |
| 212 |
. |
| 213 |
'TAPE' => <<".", |
| 214 |
Device or file to use for the archive if |
| 215 |
.Fl \\-file |
| 216 |
is not specified. |
| 217 |
If this environment variable is unset, use stdin or stdout instead. |
| 218 |
. |
| 219 |
'TAR_OPTIONS' => <<".", |
| 220 |
Options to prepend to those specified on the command line, separated by |
| 221 |
whitespace. Embedded backslashes may be used to escape whitespace or |
| 222 |
backslashes within an option. |
| 223 |
. |
| 224 |
); |
| 225 |
my $sep = ""; |
| 226 |
for my $q ( @operations) { |
| 227 |
$command_string .= " Cm"; |
| 228 |
$command_string .= $sep; |
| 229 |
$command_string .= " ".$$q{'short'} if defined($$q{'short'}); |
| 230 |
$command_string .= " ".long2nroff($$q{'name'}); |
| 231 |
if (defined($$q{'alias'})) { |
| 232 |
my $t = join(' ', '', map{long2nroff $_} @{ $$q{'alias'} }); |
| 233 |
$t =~ s/ Fl / /g; |
| 234 |
$command_string .= $t; |
| 235 |
} |
| 236 |
$sep = " \\||\\|"; |
| 237 |
} |
| 238 |
$function_letters = ".Bl -tag -width flag\n"; |
| 239 |
$function_letters .= format_options(\@operations); |
| 240 |
$function_letters .= ".El"; |
| 241 |
if ($#formats >= 0) { |
| 242 |
$format_letters = ".Bl -tag -width flag\n"; |
| 243 |
$format_letters .= format_options(\@formats); |
| 244 |
$format_letters .= ".El\n"; |
| 245 |
$$saw_format{'extra'} = $format_letters; |
| 246 |
} |
| 247 |
### Ar Cm Ic Li Nm Op Pa Va |
| 248 |
$option_letters = ".Bl -tag -width flag\n"; |
| 249 |
$option_letters .= format_options(\@options); |
| 250 |
$option_letters .= ".El"; |
| 251 |
$env_variables .= ".Bl -tag -width Ds\n"; |
| 252 |
for my $q ( @env_vars) { |
| 253 |
$env_variables .= ".It Ev $q\n"; |
| 254 |
$env_variables .= $env_description{$q}; |
| 255 |
} |
| 256 |
$env_variables .= ".El"; |
| 257 |
|
| 258 |
$examples =~ s/\n$//; |
| 259 |
$function_letters =~ s/\n$//; |
| 260 |
$option_letters =~ s/\n$//; |
| 261 |
$env_variables =~ s/\n$//; |
| 262 |
print <<"."; |
| 263 |
.\\" generated by script on $t |
| 264 |
.Dd $datestr |
| 265 |
.Dt TAR 1 |
| 266 |
.Sh NAME |
| 267 |
.Nm tar |
| 268 |
.Nd The GNU version of the tar archiving utility |
| 269 |
.Sh SYNOPSIS |
| 270 |
$command_string |
| 271 |
.Op Ar options |
| 272 |
.Op Ar pathname ... |
| 273 |
.Sh DESCRIPTION |
| 274 |
.Nm Tar |
| 275 |
stores and extracts files from a tape or disk archive. |
| 276 |
.Pp |
| 277 |
The first argument to |
| 278 |
tar |
| 279 |
should be a function; either one of the letters |
| 280 |
.Cm $short_letters , |
| 281 |
or one of the long function names. |
| 282 |
A function letter need not be prefixed with ``\\-'', and may be combined |
| 283 |
with other single-letter options. |
| 284 |
A long function name must be prefixed with |
| 285 |
.Cm \\\\-\\\\- . |
| 286 |
Some options take a parameter; with the single-letter form |
| 287 |
these must be given as separate arguments. |
| 288 |
With the long form, they may be given by appending |
| 289 |
.Cm = Ns Ar value |
| 290 |
to the option. |
| 291 |
.Sh FUNCTION LETTERS |
| 292 |
Main operation mode: |
| 293 |
$function_letters |
| 294 |
.Sh OTHER OPTIONS |
| 295 |
Operation modifiers: |
| 296 |
$option_letters |
| 297 |
.Sh ENVIRONMENT |
| 298 |
The behavior of tar is controlled by the following environment variables, |
| 299 |
among others: |
| 300 |
$env_variables |
| 301 |
.Sh EXAMPLES |
| 302 |
$examples |
| 303 |
.Sh SEE ALSO |
| 304 |
.\\" libarchive |
| 305 |
.Xr tar 5 , |
| 306 |
.\\" man-pages |
| 307 |
.Xr symlink 7 , |
| 308 |
.Xr rmt 8 |
| 309 |
.Sh HISTORY |
| 310 |
The |
| 311 |
.Nm tar |
| 312 |
command appeared in |
| 313 |
.At v7 . |
| 314 |
.Sh BUGS |
| 315 |
The GNU folks, in general, abhor man pages, and create info documents instead. |
| 316 |
Unfortunately, the info document describing tar is licensed under the GFDL with |
| 317 |
invariant cover texts, which makes it impossible to include any text |
| 318 |
from that document in this man page. |
| 319 |
Most of the text in this document was automatically extracted from the usage |
| 320 |
text in the source. |
| 321 |
It may not completely describe all features of the program. |
| 322 |
. |
| 323 |
__END__ |
|
|
324 |
++ app-arch/tar/tar-1.27.ebuild |
|
Lines 18-23
Link Here
|
| 18 |
|
18 |
|
| 19 |
RDEPEND="xattr? ( sys-apps/attr )" |
19 |
RDEPEND="xattr? ( sys-apps/attr )" |
| 20 |
DEPEND="${RDEPEND} |
20 |
DEPEND="${RDEPEND} |
|
|
21 |
dev-lang/perl |
| 21 |
nls? ( >=sys-devel/gettext-0.10.35 )" |
22 |
nls? ( >=sys-devel/gettext-0.10.35 )" |
| 22 |
|
23 |
|
| 23 |
src_prepare() { |
24 |
src_prepare() { |
|
Lines 60-66
Link Here
|
| 60 |
fi |
61 |
fi |
| 61 |
|
62 |
|
| 62 |
dodoc AUTHORS ChangeLog* NEWS README* THANKS |
63 |
dodoc AUTHORS ChangeLog* NEWS README* THANKS |
| 63 |
newman "${FILESDIR}"/tar.1 ${p}tar.1 |
64 |
perl "${FILESDIR}"/tarman > "${T}"/tar.1 || die |
|
|
65 |
newman "${T}"/tar.1 ${p}tar.1 |
| 64 |
mv "${ED}"/usr/sbin/${p}backup{,-tar} |
66 |
mv "${ED}"/usr/sbin/${p}backup{,-tar} |
| 65 |
mv "${ED}"/usr/sbin/${p}restore{,-tar} |
67 |
mv "${ED}"/usr/sbin/${p}restore{,-tar} |
| 66 |
|
68 |
|