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 ); }
void __GetNTDirInfo(DIR_TYPE *dirp, LPWIN32_FIND_DATA ffb ) { __MakeDOSDT( &ffb->ftLastWriteTime, &dirp->d_date, &dirp->d_time ); dirp->d_attr = ffb->dwFileAttributes; dirp->d_size = ffb->nFileSizeLow; __F_NAME(strncpy,wcsncpy)( dirp->d_name, ffb->cFileName, NAME_MAX ); dirp->d_name[NAME_MAX] = 0; }
void __F_NAME(__GetNTDirInfo,__wGetNTDirInfo)(DIR_TYPE *dirp, LPWIN32_FIND_DATA ffb ) { __MakeDOSDT( &ffb->ftLastWriteTime, &dirp->d_date, &dirp->d_time ); dirp->d_attr = ffb->dwFileAttributes; dirp->d_size = ffb->nFileSizeLow; #ifndef __WIDECHAR__ strncpy( dirp->d_name, ffb->cFileName, NAME_MAX ); #else wcsncpy( dirp->d_name, ffb->cFileName, NAME_MAX ); #endif dirp->d_name[NAME_MAX] = 0; }
_WCRTLINK unsigned _dos_getftime( int hid, unsigned *date, unsigned *time ) { FILETIME ctime, atime, wtime; unsigned short d, t; if( GetFileTime( __getOSHandle( hid ), &ctime, &atime, &wtime ) ) { __MakeDOSDT( &wtime, &d, &t ); *date = d; *time = t; return( 0 ); } return( __set_errno_nt_reterr() ); }