/* +++Date last modified: 05-Jul-1997 */ /* ** WIN 32 & OS/2 support functions for DIRPORT.H ** ** Public domain by Jerry Coffin ** ** 15-May-96 David Nugent Moved OS/2 functions from ** dirport.h to here ** Fixed for 32-bit OS/2 ** Allowed compilation under ** DOS for easier makefiles */ #if defined(__MSDOS__) || defined(MSDOS) /* #error "DirPort.c is NOT intended for DOS programs ..." */ #else #include "dirport.h" #if defined(OS2) int FIND_FIRST (char * spec, unsigned attr, DOSFileData *ff) { _SYSINT cnt = 1; ff->dh = (HDIR) -1; return (int) DosFindFirst ((PSZ)spec, &ff->dh, (_SYSINT)attr, &ff->f, (_SYSINT)sizeof(struct _FILEFINDBUF), &cnt, FINDLVL); } int FIND_NEXT (DOSFileData *ff) { _SYSINT cnt = 1; return (int) DosFindNext (ff->dh, &ff->f, sizeof(struct _FILEFINDBUF), &cnt); } int FIND_END (DOSFileData *ff) { return (int) DosFindClose (ff->dh); } #else /* WIN32 & WINNT */ WORD ff_date(DOSFileData *f) { WORD DOS_date; WORD DOS_time; FileTimeToDosDateTime(&(f->file.ftLastWriteTime), &DOS_date, &DOS_time); return DOS_date; } WORD ff_time(DOSFileData *f) { WORD DOS_date; WORD DOS_time; FileTimeToDosDateTime(&(f->file.ftLastWriteTime), &DOS_date, &DOS_time); return DOS_time; } WORD ff_yr(DOSFileData *f) { SYSTEMTIME t; FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t); return t.wYear; } WORD ff_mo(DOSFileData *f) { SYSTEMTIME t; FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t); return t.wMonth; } WORD ff_day(DOSFileData *f) { SYSTEMTIME t; FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t); return t.wDay; } WORD ff_hr(DOSFileData*f) { SYSTEMTIME t; FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t); return t.wHour; } WORD ff_min(DOSFileData *f) { SYSTEMTIME t; FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t); return t.wMinute; } WORD ff_tsec(DOSFileData *f) { SYSTEMTIME t; FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t); return t.wMilliseconds / 100; } int FIND_FIRST(char *spec, unsigned attrib, DOSFileData *ff) { ff_attr(ff) = attrib | _A_ARCH; ff->handle = FindFirstFile(spec, &(ff->file)); if ( INVALID_HANDLE_VALUE == ff->handle ) { return 1; } while ( 0 != (ff->file.dwFileAttributes & ~ff_attr(ff))) { if ( FALSE == FindNextFile(ff->handle, &(ff->file))) { return 1; } } return 0; } int FIND_NEXT(DOSFileData *ff) { do { if ( FALSE == FindNextFile(ff->handle, &(ff->file))) { return 1; } } while ( 0 != (ff->file.dwFileAttributes & ~ff_attr(ff))); return 0; } int FIND_END(DOSFileData *ff) { return (int)FindClose(ff->handle); } #endif /* OS/2 */ #endif /* MS-DOS */