root/ompi/mca/io/romio321/romio/adio/ad_ntfs/ad_ntfs_fcntl.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ADIOI_NTFS_Fcntl

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
   2 /* 
   3  *   Copyright (C) 1997 University of Chicago. 
   4  *   See COPYRIGHT notice in top-level directory.
   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         /* --BEGIN ERROR HANDLING-- */
  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         /* --END ERROR HANDLING-- */
  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         fd->atomicity = 0;
  62         *error_code = MPI_ERR_UNSUPPORTED_OPERATION;
  63         */
  64         break;
  65 
  66     default:
  67         /* --BEGIN ERROR HANDLING-- */
  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         /* --END ERROR HANDLING-- */
  75     }
  76 }

/* [<][>][^][v][top][bottom][index][help] */