home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_C / SNPD9404.ZIP / RFIND1ST.C < prev    next >
C/C++ Source or Header  |  1994-04-03  |  2KB  |  81 lines

  1. .I 15 1
  2. #ifndef OS2
  3. .I 38 1
  4.             my_dta = (struct DSTRUCT *)malloc(sizeof(struct DSTRUCT));
  5. .D 39 1
  6. .I 81 74
  7.  
  8. #else
  9.  
  10. /************************************************************************/
  11. /*                                                                      */
  12. /*  OS/2 Versions follow - poorly tested!                               */
  13. /*                                                                      */
  14. /************************************************************************/
  15.  
  16. #if OS2 < 2
  17.  typedef USHORT UWORD
  18. #else
  19.  typedef ULONG UWORD
  20. #endif
  21.  
  22. static HDIR hdir_ptr = DSIR_CREATE;
  23. #if OS2 < 2
  24.  static FILEFINDBUF flist;
  25. #else
  26.  static FILEFINDBUF3 flist;
  27. #endif
  28.  
  29. static PSZ fname;
  30. static UWORD count = 1;
  31.  
  32. struct DSTRUCT *rfind_1st(char *name, unsigned attribute, struct DSTRUCT *dta)
  33. {
  34.       struct DSTRUCT *my_dta;
  35.       short retval;
  36.  
  37.       if (NULL == dta)
  38.             my_dta = (struct DSTRUCT *)malloc(sizeof(struct DSTRUCT));
  39.       else  my_dta = dta;
  40.  
  41.       fname = (PSZ)name;
  42. #if OS2 < 2
  43.       if (DosFindFirst(fname, &hdir_ptr, attribute, &flist, sizeof(flist),
  44.             &count, 0L))
  45. #else
  46.       if (DosFindFirst(fname, &hdir_ptr, attribute, &flist, sizeof(flist),
  47.             &count, FIL_STANDARD))
  48. #endif
  49.       {
  50.             return NULL;
  51.       }
  52.       else
  53.       {
  54.             my_dta->ATTRIBUTE = (BYTE)(flist.attrFile & 0xff);
  55.             my_dta->TIME      = flist.ftimeCreation;
  56.             my_dta->DATE      = flist.fdateCreation;
  57.             my_dta->FSIZE     = flist.cbFile;
  58.             strcpy(my_dta->NAME, flist.achName);
  59.             return my_dta;
  60.       }
  61. }
  62.  
  63. struct DSTRUCT *rfind_nxt(struct DSTRUCT *dta)
  64. {
  65.       struct DSTRUCT *my_dta;
  66.  
  67.       if (DosFindNext(hdir_ptr, &flist, sizeof(flist), & count))
  68.             return NULL;
  69.       else
  70.       {
  71.             my_dta->ATTRIBUTE = (BYTE)(flist.attrFile & 0xff);
  72.             my_dta->TIME      = flist.ftimeCreation;
  73.             my_dta->DATE      = flist.fdateCreation;
  74.             my_dta->FSIZE     = flist.cbFile;
  75.             strcpy(my_dta->NAME, flist.achName);
  76.             return my_dta;
  77.       }
  78. }
  79.  
  80. #endif
  81.