home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / ramfs102.zip / src / newsize.c < prev    next >
C/C++ Source or Header  |  2002-09-28  |  966b  |  44 lines

  1. #include "includes.h"
  2.  
  3.  
  4.  
  5.  
  6.  
  7. APIRET EXPENTRY FS_NEWSIZE (
  8.     struct sffsi *psffsi,
  9.     struct sffsd *psffsd,
  10.     ULONG    len,
  11.     USHORT    IOflag )    /* not used */
  12. {
  13.   int       rc;
  14.   POPENFILE pOpenfile;
  15.   FBLOCK    fblkFile;
  16.  
  17.   UtilEnterRamfs();
  18.   DEBUG_PRINTF2 ("FS_NEWSIZE  sfn=%d, len=%lu", psffsi->sfi_selfsfn, len);
  19.  
  20.   pOpenfile = psffsd->pOpenfile;
  21.   VMRead (&fblkFile, pOpenfile->flatEntry + FIELDOFFSET(DIRENTRY,fblkFile), sizeof(FBLOCK));
  22.  
  23. #ifdef DEBUG
  24.   if (fblkFile.fSize != psffsi->sfi_size)
  25.   {
  26.     debugging = TRUE;
  27.     DEBUG_PRINTF2 ("\r\n!!! fblkFile.cbSize = %lu, sfi_size = %lu\r\n",
  28.           fblkFile.fSize, psffsi->sfi_size);
  29.     INT3;
  30.   }
  31. #endif
  32.  
  33.   rc = chsize_helper (&fblkFile, len);
  34.   if (rc == NO_ERROR)
  35.   {
  36.     VMWrite (pOpenfile->flatEntry + FIELDOFFSET(DIRENTRY,fblkFile), &fblkFile, sizeof(FBLOCK));
  37.     psffsi->sfi_size = len;
  38.   }
  39.  
  40.   DEBUG_PRINTF1 (" => %d\r\n", rc);
  41.   UtilExitRamfs();
  42.   return rc;
  43. }
  44.