Exemple #1
0
   void __dos_finddata_cvt( struct find_t *findbuf, struct _finddata_t *fileinfo )
  #endif
 #endif
/******************************************************************************/
{
    /*** Handle attributes ***/
    fileinfo->attrib = findbuf->attrib;

    /*** Handle the timestamps ***/
  #ifdef __WATCOM_LFN__
    if( IS_LFN( findbuf ) && CRTIME_OF( findbuf ) ) {
        fileinfo->time_create = _d2ttime( CRDATE_OF( findbuf ), CRTIME_OF( findbuf ) );
        fileinfo->time_access = _d2ttime( ACDATE_OF( findbuf ), ACTIME_OF( findbuf ) );
    } else {
  #endif
        fileinfo->time_create = -1L;
        fileinfo->time_access = -1L;
  #ifdef __WATCOM_LFN__
    }
  #endif
    fileinfo->time_write = _d2ttime( findbuf->wr_date, findbuf->wr_time );
    /*** Handle the file size ***/
  #ifdef __INT64__
    U64Set( (unsigned_64 *)&fileinfo->size, findbuf->size, 0 );
  #else
    fileinfo->size = findbuf->size;
  #endif

    /*** Handle the file name ***/
    __F_NAME(strcpy,wcscpy)( fileinfo->name, findbuf->name );
}
Exemple #2
0
   void __os2_finddata_cvt( FF_BUFFER *ffb, struct _finddata_t *fileinfo )
  #endif
 #endif
/******************************************************************************/
{
    /*** Handle the timestamps ***/
    fileinfo->time_create = _d2ttime( TODDATE( ffb->fdateCreation ),
                                        TODTIME( ffb->ftimeCreation ) );
    fileinfo->time_access = _d2ttime( TODDATE( ffb->fdateLastAccess ),
                                        TODTIME( ffb->ftimeLastAccess ) );
    fileinfo->time_write  = _d2ttime( TODDATE( ffb->fdateLastWrite ),
                                        TODTIME( ffb->ftimeLastWrite ) );

  #if defined( __INT64__ ) && !defined( _M_I86 )
    if( _FILEAPI64() ) {
  #endif
        fileinfo->attrib = ffb->attrFile;
        fileinfo->size = ffb->cbFile;
    #ifdef __WIDECHAR__
        mbstowcs( fileinfo->name, ffb->achName, _mbslen( ffb->achName ) + 1 );
    #else
        strcpy( fileinfo->name, ffb->achName );
    #endif
  #if defined( __INT64__ ) && !defined( _M_I86 )
    } else {
        fileinfo->attrib = ((FF_BUFFER_32 *)ffb)->attrFile;
        fileinfo->size = ((FF_BUFFER_32 *)ffb)->cbFile;
    #ifdef __WIDECHAR__
        mbstowcs( fileinfo->name, ((FF_BUFFER_32 *)ffb)->achName, _mbslen( ((FF_BUFFER_32 *)ffb)->achName ) + 1 );
    #else
        strcpy( fileinfo->name, ((FF_BUFFER_32 *)ffb)->achName );
    #endif
    }
  #endif
}
Exemple #3
0
   void __nt_finddata_cvt( WIN32_FIND_DATA *ffb, struct _finddata_t *fileinfo )
  #endif
 #endif
/******************************************************************************/
{
    WORD        d;
    WORD        t;

    /*** Convert attributes ***/
    fileinfo->attrib = 0;
    if( ffb->dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE ) {
        fileinfo->attrib |= _A_ARCH;
    }
    if( ffb->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
        fileinfo->attrib |= _A_SUBDIR;
    }
    if( ffb->dwFileAttributes & FILE_ATTRIBUTE_HIDDEN ) {
        fileinfo->attrib |= _A_HIDDEN;
    }
    if( ffb->dwFileAttributes & FILE_ATTRIBUTE_NORMAL ) {
        fileinfo->attrib |= _A_NORMAL;
    }
    if( ffb->dwFileAttributes & FILE_ATTRIBUTE_READONLY ) {
        fileinfo->attrib |= _A_RDONLY;
    }
    if( ffb->dwFileAttributes & FILE_ATTRIBUTE_SYSTEM ) {
        fileinfo->attrib |= _A_SYSTEM;
    }

    /*** Handle the timestamps ***/
    __MakeDOSDT( &ffb->ftCreationTime, &d, &t );
    fileinfo->time_create = _d2ttime( d, t );
    __MakeDOSDT( &ffb->ftLastAccessTime, &d, &t );
    fileinfo->time_access = _d2ttime( d, t );
    __MakeDOSDT( &ffb->ftLastWriteTime, &d, &t );
    fileinfo->time_write = _d2ttime( d, t );

    /*** Handle the file size ***/
  #ifdef __INT64__
    U64Set( (unsigned_64 *)&fileinfo->size, ffb->nFileSizeLow, ffb->nFileSizeHigh );
  #else
    fileinfo->size = ffb->nFileSizeLow;
  #endif

    /*** Handle the file name ***/
    __F_NAME(strcpy,wcscpy)( fileinfo->name, ffb->cFileName );
}
Exemple #4
0
static time_t _cvt_stamp2ttime_lfn( long long *timestamp )
{
    long            rc;

    rc = _cvt_stamp2dos_lfn( timestamp );
    if( rc == -1 ) {
        return( _d2ttime( 0, 0 ) );
    }
    return( _d2ttime( rc >> 16, rc ) );
}
Exemple #5
0
_WCRTLINK int fstat( int handle, struct stat *buf )
#endif
{
    APIRET          error;
    OS_UINT         hand_type;
    OS_UINT         device_attr;
    FF_BUFFER       info;
    unsigned        iomode_flags;

    __handle_check( handle, -1 );

    buf->st_mode = 0;
    iomode_flags = __GetIOMode( handle );
    if( iomode_flags & _READ ) {
        buf->st_mode |= S_IRUSR | S_IRGRP | S_IROTH;
    }
    if( iomode_flags & _WRITE ) {
        buf->st_mode |= S_IWUSR | S_IWGRP | S_IWOTH;
    }

    error = DosQHandType( handle, &hand_type, &device_attr );
    if( error ) {
        return( __set_errno_dos( error ) );
    }
    if( ( hand_type & ~HANDTYPE_NETWORK ) == HANDTYPE_FILE ) {
        /* handle file */
        error = DosQFileInfo( handle, FF_LEVEL, (PBYTE)&info, sizeof( info ) );
        if( error ) {
            return( __set_errno_dos( error ) );
        }
        buf->st_dev = buf->st_rdev = 0;
        /* handle timestamps */
        buf->st_ctime = _d2ttime( TODDATE( info.fdateCreation ),
                                  TODTIME( info.ftimeCreation ) );
        buf->st_atime = _d2ttime( TODDATE( info.fdateLastAccess ),
                                  TODTIME( info.ftimeLastAccess ) );
        buf->st_mtime = _d2ttime( TODDATE( info.fdateLastWrite ),
                                  TODTIME( info.ftimeLastWrite ) );
        buf->st_btime = buf->st_mtime;
#if defined( __INT64__ ) && !defined( _M_I86 )
        if( _FILEAPI64() ) {
#endif
            buf->st_attr = info.attrFile;
            buf->st_mode |= at2mode( info.attrFile );
            buf->st_size = info.cbFile;
#if defined( __INT64__ ) && !defined( _M_I86 )
        } else {
            buf->st_attr = ((FF_BUFFER_32 *)&info)->attrFile;
            buf->st_mode |= at2mode( ((FF_BUFFER_32 *)&info)->attrFile );
            buf->st_size = ((FF_BUFFER_32 *)&info)->cbFile;
        }
#endif
    } else {
        /* handle device */
        /* handle attributes */
        buf->st_attr = 0;
        buf->st_mode |= S_IRUSR | S_IRGRP | S_IROTH;
        if( ( hand_type & ~HANDTYPE_NETWORK ) == HANDTYPE_DEVICE ) {
            buf->st_mode |= S_IFCHR;
        } else if( ( hand_type & ~HANDTYPE_NETWORK ) == HANDTYPE_PIPE ) {
            buf->st_mode |= S_IFIFO;
        }
        buf->st_dev = buf->st_rdev = 1;
        /* handle timestamps */
        buf->st_atime = 0;
        buf->st_ctime = 0;
        buf->st_mtime = 0;
        buf->st_btime = 0;
        /* handle size */
        buf->st_size = 0;
    }
    buf->st_nlink = 1;
    buf->st_ino = handle;
    buf->st_uid = buf->st_gid = 0;

    buf->st_archivedID = 0;
    buf->st_updatedID = 0;
    buf->st_inheritedRightsMask = 0;
    buf->st_originatingNameSpace = 0;
    return( 0 );
}