Ignore:
Timestamp:
Nov 21, 2013, 11:26:40 AM (12 years ago)
Author:
bird
Message:

Optimized ftsfake.c for windows (similar things can be done for OS/2, if we care).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/nt/ntstat.c

    r2707 r2708  
    184184
    185185
     186/**
     187 * Fills in a stat structure from an MY_FILE_ID_FULL_DIR_INFORMATION entry.
     188 *
     189 * @param   pStat               The stat structure.
     190 * @param   pBuf                The MY_FILE_ID_FULL_DIR_INFORMATION entry.
     191 * @param   pszPath             Optionally, the path for X bit checks.
     192 */
     193void birdStatFillFromFileIdFullDirInfo(BirdStat_T *pStat, MY_FILE_ID_FULL_DIR_INFORMATION const *pBuf, const char *pszPath)
     194{
     195    pStat->st_mode          = birdFileInfoToMode(INVALID_HANDLE_VALUE, pBuf->FileAttributes, pszPath,
     196                                                 NULL, &pStat->st_dirsymlink);
     197    pStat->st_padding0[0]   = 0;
     198    pStat->st_padding0[1]   = 0;
     199    pStat->st_size          = pBuf->EndOfFile.QuadPart;
     200    birdNtTimeToTimeSpec(pBuf->CreationTime.QuadPart,   &pStat->st_birthtim);
     201    birdNtTimeToTimeSpec(pBuf->ChangeTime.QuadPart,     &pStat->st_ctim);
     202    birdNtTimeToTimeSpec(pBuf->LastWriteTime.QuadPart,  &pStat->st_mtim);
     203    birdNtTimeToTimeSpec(pBuf->LastAccessTime.QuadPart, &pStat->st_atim);
     204    pStat->st_ino           = pBuf->FileId.QuadPart;
     205    pStat->st_nlink         = 1;
     206    pStat->st_rdev          = 0;
     207    pStat->st_uid           = 0;
     208    pStat->st_gid           = 0;
     209    pStat->st_padding1[0]   = 0;
     210    pStat->st_padding1[1]   = 0;
     211    pStat->st_padding1[2]   = 0;
     212    pStat->st_blksize       = 65536;
     213    pStat->st_blocks        = (pBuf->AllocationSize.QuadPart + BIRD_STAT_BLOCK_SIZE - 1)
     214                            / BIRD_STAT_BLOCK_SIZE;
     215}
     216
     217
    186218int birdStatHandle(HANDLE hFile, BirdStat_T *pStat, const char *pszPath)
    187219{
     
    394426                     * Convert the data.
    395427                     */
    396                     pStat->st_mode          = birdFileInfoToMode(INVALID_HANDLE_VALUE, pBuf->FileAttributes, pszPath,
    397                                                                  NULL, &pStat->st_dirsymlink);
    398                     pStat->st_padding0[0]   = 0;
    399                     pStat->st_padding0[1]   = 0;
    400                     pStat->st_size          = pBuf->EndOfFile.QuadPart;
    401                     birdNtTimeToTimeSpec(pBuf->CreationTime.QuadPart,   &pStat->st_birthtim);
    402                     birdNtTimeToTimeSpec(pBuf->ChangeTime.QuadPart,     &pStat->st_ctim);
    403                     birdNtTimeToTimeSpec(pBuf->LastWriteTime.QuadPart,  &pStat->st_mtim);
    404                     birdNtTimeToTimeSpec(pBuf->LastAccessTime.QuadPart, &pStat->st_atim);
    405                     pStat->st_ino           = pBuf->FileId.QuadPart;
    406                     pStat->st_nlink         = 1;
    407                     pStat->st_rdev          = 0;
    408                     pStat->st_uid           = 0;
    409                     pStat->st_gid           = 0;
    410                     pStat->st_padding1[0]   = 0;
    411                     pStat->st_padding1[1]   = 0;
    412                     pStat->st_padding1[2]   = 0;
    413                     pStat->st_blksize       = 65536;
    414                     pStat->st_blocks        = (pBuf->AllocationSize.QuadPart + BIRD_STAT_BLOCK_SIZE - 1)
    415                                             / BIRD_STAT_BLOCK_SIZE;
     428                    birdStatFillFromFileIdFullDirInfo(pStat, pBuf, pszPath);
    416429
    417430                    /* Get the serial number, reusing the buffer from above. */
Note: See TracChangeset for help on using the changeset viewer.