PureBasic
PureBasic
Get FTP File Permissions
See more FTP Examples
_LANGUAGE_ example showing how to retrieve file permissions (via FTP) for each file in a remote directory.Chilkat PureBasic Downloads
IncludeFile "CkFtp2.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
ftp.i = CkFtp2::ckCreate()
If ftp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Set the various properties to establish the connection.
CkFtp2::setCkHostname(ftp, "ftp.example.com")
CkFtp2::setCkUsername(ftp, "login")
CkFtp2::setCkPassword(ftp, "password")
; If SSL/TLS is required..
; See http://www.cknotes.com/determining-ftp2-connection-settings/
; for more information.
CkFtp2::setCkAuthTls(ftp, 1)
CkFtp2::setCkPassiveUseHostAddr(ftp, 1)
; Connect to the FTP server:
success = CkFtp2::ckConnectOnly(ftp)
If success <> 1
Debug CkFtp2::ckLastErrorText(ftp)
CkFtp2::ckDispose(ftp)
ProcedureReturn
EndIf
; Authenticate with the FTP server.
success = CkFtp2::ckLoginAfterConnectOnly(ftp)
If success <> 1
Debug CkFtp2::ckLastErrorText(ftp)
CkFtp2::ckDispose(ftp)
ProcedureReturn
EndIf
; To get file permissions in UNIX format, disallow MSLD:
CkFtp2::setCkAllowMlsd(ftp, 0)
; To get file and sub-directory information, simply
; loop from 0 to ftp.GetDirCount() - 1
i.i = 0
n.i = CkFtp2::ckGetDirCount(ftp)
If n < 0
Debug CkFtp2::ckLastErrorText(ftp)
CkFtp2::ckDispose(ftp)
ProcedureReturn
EndIf
; Show the type of permissions information that is available.
; The two most common types are "mlsd" and "unix". See the
; online reference documentation for more information.
If n > 0
Debug "The permissions format is: " + CkFtp2::ckGetPermType(ftp,0)
EndIf
While i < n
; Display the permissions and filename
Debug CkFtp2::ckGetPermissions(ftp,i) + " " + CkFtp2::ckGetFilename(ftp,i)
i = i + 1
Wend
; Assuming MLSD was possible, let's see the file permissions in MLSD format:
CkFtp2::setCkAllowMlsd(ftp, 1)
; Clear the directory cache so we're forced to re-fetch the directory listing:
CkFtp2::ckClearDirCache(ftp)
n = CkFtp2::ckGetDirCount(ftp)
If n < 0
Debug CkFtp2::ckLastErrorText(ftp)
CkFtp2::ckDispose(ftp)
ProcedureReturn
EndIf
; Show the type of permissions information that is available.
; The two most common types are "mlsd" and "unix". See the
; online reference documentation for more information.
If n > 0
Debug "----"
Debug "The permissions format is: " + CkFtp2::ckGetPermType(ftp,0)
EndIf
i = 0
While i < n
; Display the permissions and filename
Debug CkFtp2::ckGetPermissions(ftp,i) + " " + CkFtp2::ckGetFilename(ftp,i)
i = i + 1
Wend
success = CkFtp2::ckDisconnect(ftp)
CkFtp2::ckDispose(ftp)
ProcedureReturn
EndProcedure