home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / DIRPORT.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  3KB  |  157 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  WIN 32 & OS/2 support functions for DIRPORT.H
  5. **
  6. **  Public domain by Jerry Coffin
  7. **
  8. **  15-May-96 David Nugent    Moved OS/2 functions from
  9. **                            dirport.h to here
  10. **                            Fixed for 32-bit OS/2
  11. **                            Allowed compilation under
  12. **                            DOS for easier makefiles
  13. */
  14.  
  15. #if defined(__MSDOS__) || defined(MSDOS)
  16. /* #error "DirPort.c is NOT intended for DOS programs ..." */
  17. #else
  18.  
  19. #include "dirport.h"
  20.  
  21. #if defined(OS2)
  22.  
  23. int FIND_FIRST (char * spec, unsigned attr, DOSFileData *ff)
  24. {
  25.   _SYSINT cnt = 1;
  26.   ff->dh = (HDIR) -1;
  27.   return (int) DosFindFirst ((PSZ)spec, &ff->dh, (_SYSINT)attr, &ff->f,
  28.                              (_SYSINT)sizeof(struct _FILEFINDBUF), &cnt, FINDLVL);
  29. }
  30.  
  31. int FIND_NEXT (DOSFileData *ff)
  32. {
  33.   _SYSINT cnt = 1;
  34.   return (int) DosFindNext (ff->dh, &ff->f, sizeof(struct _FILEFINDBUF), &cnt);
  35. }
  36.  
  37. int FIND_END (DOSFileData *ff)
  38. {
  39.   return (int) DosFindClose (ff->dh);
  40. }
  41.  
  42. #else   /* WIN32 & WINNT */
  43.  
  44. WORD ff_date(DOSFileData *f)
  45. {
  46.       WORD DOS_date;
  47.       WORD DOS_time;
  48.  
  49.       FileTimeToDosDateTime(&(f->file.ftLastWriteTime), &DOS_date, &DOS_time);
  50.  
  51.       return DOS_date;
  52. }
  53.  
  54. WORD ff_time(DOSFileData *f)
  55. {
  56.       WORD DOS_date;
  57.       WORD DOS_time;
  58.  
  59.       FileTimeToDosDateTime(&(f->file.ftLastWriteTime), &DOS_date, &DOS_time);
  60.  
  61.       return DOS_time;
  62. }
  63.  
  64. WORD ff_yr(DOSFileData *f)
  65. {
  66.       SYSTEMTIME t;
  67.  
  68.       FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t);
  69.  
  70.       return t.wYear;
  71. }
  72.  
  73. WORD ff_mo(DOSFileData *f)
  74. {
  75.       SYSTEMTIME t;
  76.  
  77.       FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t);
  78.  
  79.       return t.wMonth;
  80. }
  81.  
  82.  
  83. WORD ff_day(DOSFileData *f)
  84. {
  85.       SYSTEMTIME t;
  86.  
  87.       FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t);
  88.  
  89.       return t.wDay;
  90. }
  91.  
  92. WORD ff_hr(DOSFileData*f)
  93. {
  94.       SYSTEMTIME t;
  95.  
  96.       FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t);
  97.  
  98.       return t.wHour;
  99. }
  100.  
  101. WORD ff_min(DOSFileData *f)
  102. {
  103.       SYSTEMTIME t;
  104.  
  105.       FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t);
  106.  
  107.       return t.wMinute;
  108. }
  109.  
  110. WORD ff_tsec(DOSFileData *f)
  111. {
  112.       SYSTEMTIME t;
  113.  
  114.       FileTimeToSystemTime(&(f->file.ftLastWriteTime), &t);
  115.  
  116.       return t.wMilliseconds / 100;
  117. }
  118.  
  119. int FIND_FIRST(char *spec, unsigned attrib, DOSFileData *ff)
  120. {
  121.       ff_attr(ff) = attrib | _A_ARCH;
  122.  
  123.       ff->handle = FindFirstFile(spec, &(ff->file));
  124.  
  125.       if ( INVALID_HANDLE_VALUE == ff->handle ) {
  126.             return 1;
  127.       }
  128.  
  129.       while ( 0 != (ff->file.dwFileAttributes & ~ff_attr(ff)))
  130.       {
  131.             if ( FALSE == FindNextFile(ff->handle, &(ff->file))) {
  132.                   return 1;
  133.             }
  134.       }
  135.       return 0;
  136. }
  137.  
  138. int FIND_NEXT(DOSFileData *ff)
  139. {
  140.       do {
  141.             if ( FALSE == FindNextFile(ff->handle, &(ff->file))) {
  142.                   return 1;
  143.             }
  144.  
  145.       } while ( 0 != (ff->file.dwFileAttributes & ~ff_attr(ff)));
  146.       return 0;
  147. }
  148.  
  149. int FIND_END(DOSFileData *ff)
  150. {
  151.     return (int)FindClose(ff->handle);
  152. }
  153.  
  154. #endif /* OS/2   */
  155.  
  156. #endif /* MS-DOS */
  157.