Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oFtp
LOCAL i
LOCAL n

nSuccess := 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

oFtp := CreateObject("Chilkat.Ftp2")

//  Set the various properties to establish the connection.
oFtp:Hostname := "ftp.example.com"
oFtp:Username := "login"
oFtp:Password := "password"

//  If SSL/TLS is required..
//  See http://www.cknotes.com/determining-ftp2-connection-settings/ 
//  for more information.
oFtp:AuthTls := 1
oFtp:PassiveUseHostAddr := 1

//  Connect to the FTP server:
nSuccess := oFtp:ConnectOnly()
IF (nSuccess != 1)
    ? oFtp:LastErrorText
    oFtp:destroy()
    RETURN
ENDIF

//  Authenticate with the FTP server.
nSuccess := oFtp:LoginAfterConnectOnly()
IF (nSuccess != 1)
    ? oFtp:LastErrorText
    oFtp:destroy()
    RETURN
ENDIF

//  To get file permissions in UNIX format, disallow MSLD:
oFtp:AllowMlsd := 0

//  To get file and sub-directory information, simply
//  loop from 0 to ftp.GetDirCount() - 1
i := 0
n := oFtp:GetDirCount()
IF (n < 0)
    ? oFtp:LastErrorText
    oFtp:destroy()
    RETURN
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)
    ? "The permissions format is: " + oFtp:GetPermType(0)
ENDIF

DO WHILE i < n

    //  Display the permissions and filename
    ? oFtp:GetPermissions(i) + " " + oFtp:GetFilename(i)

    i := i + 1
ENDDO

//  Assuming MLSD was possible, let's see the file permissions in MLSD format:
oFtp:AllowMlsd := 1

//  Clear the directory cache so we're forced to re-fetch the directory listing:
oFtp:ClearDirCache()

n := oFtp:GetDirCount()
IF (n < 0)
    ? oFtp:LastErrorText
    oFtp:destroy()
    RETURN
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)
    ? "----"
    ? "The permissions format is: " + oFtp:GetPermType(0)
ENDIF

i := 0
DO WHILE i < n

    //  Display the permissions and filename
    ? oFtp:GetPermissions(i) + " " + oFtp:GetFilename(i)

    i := i + 1
ENDDO

nSuccess := oFtp:Disconnect()

oFtp:destroy()