This source file includes following definitions.
- ADIOI_NTFS_Fcntl
   1 
   2 
   3 
   4 
   5 
   6 
   7 #include "ad_ntfs.h"
   8 #include "adio_extern.h"
   9 
  10 void ADIOI_NTFS_Fcntl(ADIO_File fd, int flag, ADIO_Fcntl_t *fcntl_struct, int *error_code)
  11 {
  12     DWORD err;
  13     LONG dwTemp;
  14     static char myname[] = "ADIOI_NTFS_FCNTL";
  15 
  16     switch(flag)
  17     {
  18     case ADIO_FCNTL_GET_FSIZE:
  19         fcntl_struct->fsize = SetFilePointer(fd->fd_sys, 0, 0, FILE_END);
  20         if (fd->fp_sys_posn != -1) 
  21         {
  22             dwTemp = DWORDHIGH(fd->fp_sys_posn);
  23             if (SetFilePointer(fd->fd_sys, DWORDLOW(fd->fp_sys_posn), &dwTemp, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
  24             {
  25         char errMsg[ADIOI_NTFS_ERR_MSG_MAX];
  26                 err = GetLastError();
  27         ADIOI_NTFS_Strerror(err, errMsg, ADIOI_NTFS_ERR_MSG_MAX);
  28                 if (err != NO_ERROR)
  29                 {
  30                     *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
  31                         myname, __LINE__, MPI_ERR_IO,
  32                         "**io", "**io %s", errMsg);
  33                     return;
  34                 }
  35             }
  36         }
  37         
  38         if (fcntl_struct->fsize == INVALID_SET_FILE_POINTER)
  39         {
  40         char errMsg[ADIOI_NTFS_ERR_MSG_MAX];
  41             dwTemp = GetLastError();
  42         ADIOI_NTFS_Strerror(dwTemp, errMsg, ADIOI_NTFS_ERR_MSG_MAX);
  43             *error_code = MPIO_Err_create_code(MPI_SUCCESS,
  44                                                MPIR_ERR_RECOVERABLE, myname,
  45                                                __LINE__, MPI_ERR_IO, "**io",
  46                                                "**io %s", errMsg);
  47             return;
  48         }
  49         
  50         *error_code = MPI_SUCCESS;
  51         break;
  52 
  53     case ADIO_FCNTL_SET_DISKSPACE:
  54         ADIOI_GEN_Prealloc(fd, fcntl_struct->diskspace, error_code);
  55         break;
  56 
  57     case ADIO_FCNTL_SET_ATOMICITY:
  58         fd->atomicity = (fcntl_struct->atomicity == 0) ? 0 : 1;
  59         *error_code = MPI_SUCCESS;
  60         
  61 
  62 
  63 
  64         break;
  65 
  66     default:
  67         
  68         *error_code = MPIO_Err_create_code(MPI_SUCCESS,
  69                                            MPIR_ERR_RECOVERABLE,
  70                                            myname, __LINE__,
  71                                            MPI_ERR_ARG,
  72                                            "**flag", "**flag %d", flag);
  73         return;
  74         
  75     }
  76 }