Description
-
Deletes multiple files in a sequence, recursive.
Return type
-
A Long value. If successful, 0 is returned, otherwise
error as specified here.
Syntax
-
long Sftp_DeleteFiles(void *Sftp, char *
RemotePath, int MaxLevel);
The DeleteFiles function syntax has these parts:
| void
*Sftp |
Handle of the created Sftp
instance. |
| char
*RemotePath |
Holds full path on the server
from where files/folders are deleted. |
| int MaxLevel |
Specifies maximum number of
subdirectory levels to delete. 0 for unlimited. |
Remarks
-
This function will try to delete complete directory structure on
the server. You need to specify RemotePath
that determines location from where files and directories are
deleted.
wodSFTP will go up to MaxLevel deep
into recursion. Default value is 5 - meaning up to 5 subdirectory
levels will be deleted. You can specify any value for
MaxLevel. If you specify 0, that means
that no restriction exists for recursion depth - this is dangerous
setting that could cause infinite loops to be created if remote
system has symbolic links pointing back to parent folders on remote
system!
Before each item is deleted,
LoopItemcallback
will be called, specifying remote file/folder name (including full
path), type of the item (file/folder/symbolic link) and will allow
you to Skip the item so it is not
deleted at all. Make sure your logic for setting
Skip = True is correct - if you
skip deletion of the file and then try to delete it's parent
directory, more errors can occur. Since DeleteFiles does not support
wildcards (for example, you cannot specify "*.TXT" in DeleteFiles
call), LoopItem is a place to determine if certain item matches your
wildcard expression (if you have any), so you can skip files that
doesn't match your criteria.
If an errors occurs during deletion,
LoopError
callback is called holding error number and error description of the
error. If you leave ErrorCode argument
in LoopError callback as is - DeleteFiles operation will be aborted.
If you change ErrorCode value in
LoopError callback to 0, then DeleteFiles operation will continue
(ignoring the error) normally.
Do not forget that RemotePath should always
specify full absolute path (i.e. /home/joe/something) instead of
relative path (i.e. joe/something).
|