File: //usr/local/ssl/local/share/man/man3/Filesys::Virtual::Plain.3
.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. | will give a
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.\"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "Plain 3"
.TH Plain 3 "2006-07-30" "perl v5.8.8" "User Contributed Perl Documentation"
.SH "NAME"
Filesys::Virtual::Plain \- A Plain virtual filesystem
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\& use Filesys::Virtual::Plain;
.Ve
.PP
.Vb 1
\& my $fs = Filesys::Virtual::Plain->new();
.Ve
.PP
.Vb 1
\& $fs->login('xantus', 'supersekret');
.Ve
.PP
.Vb 1
\& print foreach ($fs->list('/'));
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This module is used by other modules to provide a pluggable filesystem.
.SH "CONSTRUCTOR"
.IX Header "CONSTRUCTOR"
.Sh "\fInew()\fP"
.IX Subsection "new()"
You can pass the initial cwd, root_path, and home_path as a hash.
.SH "METHODS"
.IX Header "METHODS"
.ie n .Sh "login($username, $password\fP, \f(CW$become)"
.el .Sh "login($username, \f(CW$password\fP, \f(CW$become\fP)"
.IX Subsection "login($username, $password, $become)"
Logs in a user. Returns 0 on failure. If \f(CW$username\fR is 'anonymous' then it
will try to login as 'ftp' with no password. If \f(CW$become\fR is defined then it
will try to change ownership of the process to the uid/gid of the logged in
user. \s-1BEWARE\s0 of the consequences of using \f(CW$become\fR. \fIlogin()\fR also sets the
uid, gid, home, gids, home_path, and chdir to the users'.
.Sh "cwd"
.IX Subsection "cwd"
Gets or sets the current directory, assumes / if blank.
This is used in conjunction with the root_path for file operations.
No actual change directory takes place.
.Sh "root_path($path)"
.IX Subsection "root_path($path)"
Get or set the root path. All file paths are off this and cwd
For example:
.PP
.Vb 3
\& $self->root_path('/home/ftp');
\& $self->cwd('/test');
\& $self->size('testfile.txt');
.Ve
.PP
The size command would get the size for file /home/ftp/test/testfile.txt
not /test/testfile.txt
.Sh "chmod($mode,$file)"
.IX Subsection "chmod($mode,$file)"
chmod's a file.
.Sh "modtime($file)"
.IX Subsection "modtime($file)"
Gets the modification time of a file in \s-1YYYYMMDDHHMMSS\s0 format.
.Sh "size($file)"
.IX Subsection "size($file)"
Gets the size of a file in bytes.
.Sh "delete($file)"
.IX Subsection "delete($file)"
Deletes a file, returns 1 or 0 on success or failure.
.Sh "chdir($dir)"
.IX Subsection "chdir($dir)"
Changes the cwd to a new path from root_path.
Returns undef on failure or the new path on success.
.ie n .Sh "mkdir($dir, $mode)"
.el .Sh "mkdir($dir, \f(CW$mode\fP)"
.IX Subsection "mkdir($dir, $mode)"
Creats a directory with \f(CW$mode\fR (defaults to 0755) and \fIchown()\fR's the directory
with the uid and gid. The return value is from \fImkdir()\fR.
.Sh "rmdir($dir)"
.IX Subsection "rmdir($dir)"
Deletes a directory or file if \-d test fails. Returns 1 on success or 0 on
failure.
.Sh "list($dir)"
.IX Subsection "list($dir)"
Returns an array of the files in a directory.
.Sh "list_details($dir)"
.IX Subsection "list_details($dir)"
Returns an array of the files in ls format.
.Sh "stat($file)"
.IX Subsection "stat($file)"
Does a normal \fIstat()\fR on a file or directory
.Sh "test($test,$file)"
.IX Subsection "test($test,$file)"
Perform a perl type test on a file and returns the results.
.PP
For example to perform a \-d on a directory.
.PP
.Vb 1
\& $self->test('d','/testdir');
.Ve
.PP
See filetests in perlfunc (commandline: perldoc perlfunc)
.Sh "open_read($file,[params])"
.IX Subsection "open_read($file,[params])"
Opens a file with IO::File. Params are passed to \fIopen()\fR of IO::File.
It returns the file handle on success or undef on failure. This could
be technically be used for any sort of open operation. See IO::File's
open method.
.Sh "close_read($fh)"
.IX Subsection "close_read($fh)"
Performs a \f(CW$fh\fR\->\fIclose()\fR
.ie n .Sh "open_write($fh, $append)"
.el .Sh "open_write($fh, \f(CW$append\fP)"
.IX Subsection "open_write($fh, $append)"
Performs an \f(CW$fh\fR\->open(\*(L">$file\*(R") or \f(CW$fh\fR\->open(\*(L">>$file\*(R") if \f(CW$append\fR is defined.
Returns the filehandle on success or undef on failure.
.Sh "close_write($fh)"
.IX Subsection "close_write($fh)"
Performs a \f(CW$fh\fR\->\fIclose()\fR
.ie n .Sh "seek($fh, $pos\fP, \f(CW$wence)"
.el .Sh "seek($fh, \f(CW$pos\fP, \f(CW$wence\fP)"
.IX Subsection "seek($fh, $pos, $wence)"
Performs a \f(CW$fh\fR\->seek($pos, \f(CW$wence\fR). See IO::Seekable.
.ie n .Sh "utime($atime, $mtime\fP, \f(CW@files)"
.el .Sh "utime($atime, \f(CW$mtime\fP, \f(CW@files\fP)"
.IX Subsection "utime($atime, $mtime, @files)"
Performs a \fIutime()\fR on the file(s). It changes the access time and mod time of
those files.
.SH "AUTHOR"
.IX Header "AUTHOR"
David Davis, <xantus@cpan.org>, http://teknikill.net/
.SH "LICENSE"
.IX Header "LICENSE"
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIperl\fR\|(1), Filesys::Virtual, Filesys::Virtual::SSH,
Filesys::Virtual::DAAP, POE::Component::Server::FTP,
Net::DAV::Server, HTTP::Daemon,
http://perladvent.org/2004/20th/