Second pass at adding key files
This commit is contained in:
		
							
								
								
									
										441
									
								
								site/glist/templates/help/GT/Tar.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								site/glist/templates/help/GT/Tar.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,441 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>GT::Tar - Perl module to manipulate tar files.</title>
 | 
			
		||||
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
 | 
			
		||||
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
 | 
			
		||||
/* $MVD$:fontset("Arial","Arial") */
 | 
			
		||||
/* $MVD$:fontset("Arial Black","Arial Black") */
 | 
			
		||||
/* $MVD$:fontset("Algerian","Algerian") */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    font-family: Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size: small;
 | 
			
		||||
    color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p {
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h5 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h6 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ul {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ol {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
li {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
th {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
td {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dd {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dt {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-H1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : 14.0pt;
 | 
			
		||||
    background-color : transparent;
 | 
			
		||||
    background-image : none;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 12.0pt;
 | 
			
		||||
    color : blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indent {
 | 
			
		||||
    font-family : "Verdana, Arial, sans-serif";
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indent {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre.programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE-programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : normal;
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 6.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 10.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-BODY {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body style="background-color: white">
 | 
			
		||||
 | 
			
		||||
<p><a name="__index__"></a></p>
 | 
			
		||||
<!-- INDEX BEGIN -->
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#name">NAME</a></li>
 | 
			
		||||
	<li><a href="#synopsis">SYNOPSIS</a></li>
 | 
			
		||||
	<li><a href="#description">DESCRIPTION</a></li>
 | 
			
		||||
	<ul>
 | 
			
		||||
 | 
			
		||||
		<li><a href="#creating_a_tar_file">Creating a tar file</a></li>
 | 
			
		||||
		<li><a href="#opening_an_existing_tar_file">Opening an existing tar file</a></li>
 | 
			
		||||
		<li><a href="#untarring_a_tar_file">Untarring a tar file</a></li>
 | 
			
		||||
		<li><a href="#adding_files_to_a_tar_file">Adding files to a tar file</a></li>
 | 
			
		||||
		<li><a href="#getting_a_list_of_files_in_a_tar">Getting a list of files in a tar</a></li>
 | 
			
		||||
		<li><a href="#getting_an_individual_file_from_a_tar">Getting an individual file from a tar</a></li>
 | 
			
		||||
		<li><a href="#removing_a_file_from_a_tar">Removing a file from a tar</a></li>
 | 
			
		||||
		<li><a href="#gt__tar__part">GT::Tar::Part</a></li>
 | 
			
		||||
	</ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#examples">EXAMPLES</a></li>
 | 
			
		||||
	<li><a href="#copyright">COPYRIGHT</a></li>
 | 
			
		||||
	<li><a href="#version">VERSION</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<!-- INDEX END -->
 | 
			
		||||
 | 
			
		||||
<hr />
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h1><a name="name">NAME</a></h1>
 | 
			
		||||
<p>GT::Tar - Perl module to manipulate tar files.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="synopsis">SYNOPSIS</a></h1>
 | 
			
		||||
<pre>
 | 
			
		||||
    use GT::Tar;
 | 
			
		||||
    my $tar = GT::Tar->open('foo.tar');
 | 
			
		||||
    $tar->add_file( '/path/to/file' );
 | 
			
		||||
    $tar->write;</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="description">DESCRIPTION</a></h1>
 | 
			
		||||
<p>GT::Tar provides an OO intefrace to a tar file. It allows you to create or edit
 | 
			
		||||
tar files, and if you have Compress::Zlib installed, it allows you to work with
 | 
			
		||||
.tar.gz files as well!</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="creating_a_tar_file">Creating a tar file</a></h2>
 | 
			
		||||
<p>To create a tar file, you simply call:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $tar = new GT::Tar;</pre>
 | 
			
		||||
<p>and then to save it:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $tar->write('filename.tar');</pre>
 | 
			
		||||
<p>will save the tar file and any files you have added.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="opening_an_existing_tar_file">Opening an existing tar file</a></h2>
 | 
			
		||||
<p>To open a tar file you call:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $tar = GT::Tar->open('/path/to/file.tar')
 | 
			
		||||
        or die "Can't open: $GT::Tar::error";</pre>
 | 
			
		||||
<p>Note: the tar object keeps an open filehandle to the file, so if you are on
 | 
			
		||||
windows, you may not be able to manipulate it until you call $tar->close_tar, or
 | 
			
		||||
the tar object goes out of scope.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="untarring_a_tar_file">Untarring a tar file</a></h2>
 | 
			
		||||
<p>To untar a tar file, you can simply call:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $tar->untar( \&code_ref );</pre>
 | 
			
		||||
<p>or as a class method</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    GT::Tar->untar('/path/to/tar.tar', \&code_ref );</pre>
 | 
			
		||||
<p>The code ref is optional. If provided, you will get passed in the a
 | 
			
		||||
GT::Tar::Part object before the file is extracted. This lets you change the
 | 
			
		||||
path, or alter any attributes of the file before it is saved to disk.</p>
 | 
			
		||||
<p>Alternatively, instead of a code reference you may pass an extraction path - if
 | 
			
		||||
passed, all files will be extracted relative to that path.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="adding_files_to_a_tar_file">Adding files to a tar file</a></h2>
 | 
			
		||||
<p>To add a file:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $tar->add_file( '/path/to/file' );</pre>
 | 
			
		||||
<p>Note, if you add a directory, the tar module will recurse and add all files in
 | 
			
		||||
that directory.</p>
 | 
			
		||||
<p>To add a file that isn't saved:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $tar->add_data( name => 'Filename', body => 'File body' );</pre>
 | 
			
		||||
<p>You can pass in either a scalar for the body, or an opened file handle.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="getting_a_list_of_files_in_a_tar">Getting a list of files in a tar</a></h2>
 | 
			
		||||
<p>To get a list of files in a tar:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $files = $tar->files;</pre>
 | 
			
		||||
<p>This returns an array ref of GT::Tar::Part objects. See below for how to access
 | 
			
		||||
information from a part.</p>
 | 
			
		||||
<p>Note: if you change a part, it will update the tar file if you save it.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="getting_an_individual_file_from_a_tar">Getting an individual file from a tar</a></h2>
 | 
			
		||||
<p>If you know the name of the file you want:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $file = $tar->get_file('Filename');</pre>
 | 
			
		||||
<p>will return a single GT::Tar::Part object.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="removing_a_file_from_a_tar">Removing a file from a tar</a></h2>
 | 
			
		||||
<p>To remove a file, you need to know the name of it:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $tar->remove_file('Filename');
 | 
			
		||||
    $tar->write;</pre>
 | 
			
		||||
<p>and you need to save it before the change will take affect.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="gt__tar__part">GT::Tar::Part</a></h2>
 | 
			
		||||
<p>Each file is a separate part object. The part object has the following
 | 
			
		||||
attributes:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    name    file name
 | 
			
		||||
    mode    file permissions
 | 
			
		||||
    uid     user id
 | 
			
		||||
    gid     group id
 | 
			
		||||
    size    file size
 | 
			
		||||
    mtime   last modified time
 | 
			
		||||
    type    file type
 | 
			
		||||
    body    file body</pre>
 | 
			
		||||
<p>You can access or set any of these attributes by just using the attribute name
 | 
			
		||||
as the method (as it inherits from <a href="glist.cgi?do=admin_gtdoc&topic=/GT/Base.html">the GT::Base manpage</a>).</p>
 | 
			
		||||
<p>You can also call:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $file->write;</pre>
 | 
			
		||||
<p>or:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $file->write("/extraction/path")</pre>
 | 
			
		||||
<p>and the file will be created with the given attributes. Basically untar just
 | 
			
		||||
foreach's through each of the objects and calls <code>write()</code> on it.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="examples">EXAMPLES</a></h1>
 | 
			
		||||
<p>To create a new tar and add two directories to it, and save it in
 | 
			
		||||
'/tmp/foo.tar';</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $tar = new GT::Tar;
 | 
			
		||||
    $tar->add_file( '/home/httpd/html' );
 | 
			
		||||
    $tar->add_file( '/home/backup' );
 | 
			
		||||
    $tar->write('/tmp/foo.tar');</pre>
 | 
			
		||||
<p>To open an existing tar file and save all the .pl files in /home/alex.</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $tar = GT::Tar->open('files.tar');
 | 
			
		||||
    my $files = $tar->files;
 | 
			
		||||
    foreach my $file (@$files) {
 | 
			
		||||
        my $name = $file->name;
 | 
			
		||||
        if ($name =~ m,[^/]*\.pl$,) {
 | 
			
		||||
            $file->write("/home/alex");
 | 
			
		||||
        }
 | 
			
		||||
    }</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="copyright">COPYRIGHT</a></h1>
 | 
			
		||||
<p>Copyright (c) 2004 Gossamer Threads Inc.  All Rights Reserved.
 | 
			
		||||
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="version">VERSION</a></h1>
 | 
			
		||||
<p>Revision: $Id: Tar.pm,v 1.54 2005/03/09 01:26:17 jagerman Exp $</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user