NAME
SMB::File - Remote or local file abstraction for SMB
SYNOPSIS
use SMB::File;
# create local file object for server
my $file = SMB::File->new(
name => $create_request->file_name,
share_root => $tree->root,
is_ipc => $tree->is_ipc,
);
say $file->name; # "john\\file.txt"
say $file->filename; # "/my/shares/Users/john/file.txt"
# acquire remote file object(s) for client
my $file = $create_response->openfile->file;
my @files = @{$querydirectory_response->files};
DESCRIPTION
This class implements an SMB file abstraction for a client or a server.
This class inherits from SMB, so msg, err, mem, dump, auto-created field accessor and other methods are available as well.
CONSTANTS
The following constants are available as SMB::File::CONSTANT_NAME.
ATTR_READONLY
ATTR_HIDDEN
ATTR_SYSTEM
ATTR_DIRECTORY
ATTR_ARCHIVE
ATTR_DEVICE
ATTR_NORMAL
ATTR_TEMPORARY
ATTR_SPARSE_FILE
ATTR_REPARSE_POINT
ATTR_COMPRESSED
ATTR_OFFLINE
ATTR_NOT_CONTENT_INDEXED
ATTR_ENCRYPTED
DISPOSITION_SUPERSEDE
DISPOSITION_OPEN
DISPOSITION_CREATE
DISPOSITION_OPEN_IF
DISPOSITION_OVERWRITE
DISPOSITION_OVERWRITE_IF
ACTION_NONE
ACTION_SUPERSEDED
ACTION_OPENED
ACTION_CREATED
ACTION_OVERWRITTEN
METHODS
- new [OPTIONS]
-
Class constructor. Creates an instance of SMB::File.
The following keys of OPTIONS hash are recognized in addition to the ones recognized by superclass SMB:
name SMB name, no need to start with a backslash is_directory for remote file, this is an attribute hint share_root for local file, this is the share directory is_ipc for local or remote file in IPC tree
- update CREATION_TIME LAST_ACCESS_TIME LAST_WRITE_TIME CHANGE_TIME ALLOCATION_SIZE END_OF_FILE ATTRIBUTES [SWAPPED=0]
-
Updates corresponding file times (each uint64), sizes (each uint64) and attributes (uint32). Flag SWAPPED indicates that the sizes are swapped (first end_of_file, then allocation_size).
- is_directory
-
Returns true when the file is marked or stat'd as a directory.
- ctime
-
Returns file creation_time as unix time.
- atime
-
Returns file last_access_time as unix time.
- wtime
-
Returns file last_write_time as unix time.
- mtime
-
Returns file change_time as unix time.
- ctime_string [FORMAT]
-
Returns file creation_time as string using function time_to_string.
- atime_string [FORMAT]
-
Returns file last_access_time as string using function time_to_string.
- wtime_string [FORMAT]
-
Returns file last_write_time as string using function time_to_string.
- mtime_string [FORMAT]
-
Returns file change_time as string using function time_to_string.
- size
-
Returns file size in bytes. This is just an alias to end_of_file.
- size_string
-
Returns file size in human readable form that is always not longer than 9 characters, like: "314159265", "34.567 G", "234.567 T" or "785634e12".
- add_openfile HANDLE ACTION
-
Create and return an SMB::OpenFile object using supplied HANDLE and ACTION, intended for local files on server side. HANDLE may be undef for special open files (like IPC files srvsvc and wkssvc). Increments the number of open files for this file object.
- delete_openfile OPENFILE
-
The opposite of add_openfile, closes handle if needed and decrements the number of open files for this file object.
- supersede
- open
- create
- overwrite
- open_if
- overwrite_if
- open_by_disposition DISPOSITION
-
Opens local file by given disposition (using NTFS / SMB semantics). Returns an SMB::OpenFile object on success or undef on failure. The openfile object is created by calling add_openfile internally.
- find_files PARAMS
-
Returns an array ref of SMB::File objects corresponding to the files in this local file object that is a directory. PARAMS is a hash with optional keys "pattern" (default "*") and "start_idx" (default 0).
FUNCTIONS
None of the following functions are exported. But they may be called as SMB::File::FUNC_NAME.
- from_ntattr NTFS_ATTR
-
Converts from NTFS attributes (uint32) to Unix mode (unsigned int).
- to_ntattr UNIX_MODE
-
Converts from Unix mode (unsigned int) to NTFS attributes (uint32).
- time_to_string TIME [FORMAT="%4Y-%2m-%2d %2H:%2M"]
-
Returns human readable representation of unix time (uint32).
SEE ALSO
SMB::OpenFile, SMB::Tree, SMB::Client, SMB::Server, SMB.
AUTHOR
Mikhael Goikhman <migo@cpan.org>