Sample code for 30+ languages & platforms
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

PureBasic
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