VirtualBox

Changeset 82723 in vbox for trunk/src/VBox/Runtime/tools


Ignore:
Timestamp:
Jan 13, 2020 10:26:27 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135661
Message:

IPRT/FTP: More protocol handling and callback work. bugref:9437

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/tools/RTFTPServer.cpp

    r82715 r82723  
    4848#include <iprt/ctype.h>
    4949#include <iprt/errcore.h>
     50#include <iprt/file.h>
    5051#include <iprt/getopt.h>
    5152#include <iprt/initterm.h>
     
    191192
    192193    return VINF_SUCCESS;
     194}
     195
     196static DECLCALLBACK(int) onFileGetSize(PRTFTPCALLBACKDATA pData, const char *pcszPath, uint64_t *puSize)
     197{
     198    RT_NOREF(pData);
     199
     200    RTPrintf("Retrieving file size for '%s' ...\n", pcszPath);
     201
     202    RTFILE hFile;
     203    int rc = RTFileOpen(&hFile, pcszPath,
     204                        RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_WRITE);
     205    if (RT_SUCCESS(rc))
     206    {
     207        rc = RTFileQuerySize(hFile, puSize);
     208        if (RT_SUCCESS(rc))
     209            RTPrintf("File size is: %RU64\n", *puSize);
     210        RTFileClose(hFile);
     211    }
     212
     213    return rc;
     214}
     215
     216static DECLCALLBACK(int) onFileStat(PRTFTPCALLBACKDATA pData, const char *pcszPath, PRTFSOBJINFO pFsObjInfo)
     217{
     218    RT_NOREF(pData);
     219
     220    RTFILE hFile;
     221    int rc = RTFileOpen(&hFile, pcszPath,
     222                        RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_WRITE);
     223    if (RT_SUCCESS(rc))
     224    {
     225        rc = RTFileQueryInfo(hFile, pFsObjInfo, RTFSOBJATTRADD_NOTHING);
     226        RTFileClose(hFile);
     227    }
     228
     229    return rc;
    193230}
    194231
     
    337374        Callbacks.pfnOnUserAuthenticate = onUserAuthenticate;
    338375        Callbacks.pfnOnUserDisconnect   = onUserDisonnect;
     376        Callbacks.pfnOnFileGetSize      = onFileGetSize;
     377        Callbacks.pfnOnFileStat         = onFileStat;
    339378        Callbacks.pfnOnPathSetCurrent   = onPathSetCurrent;
    340379        Callbacks.pfnOnPathGetCurrent   = onPathGetCurrent;
    341380        Callbacks.pfnOnPathUp           = onPathUp;
    342         Callbacks.pfnOnList             = onList;
    343381        Callbacks.pfnOnList             = onList;
    344382
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette