1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
/*
* Copyright (C) by Argonne National Laboratory
* See COPYRIGHT in top-level directory
*/
#include "adio.h"
#include "adio_extern.h"
/* Check for special error codes for those MPI error
classes that relate to particular problems.
Returns an MPI error code corresponding to "my_errno", for function "myname"
* and the given file, "filename". */
int ADIOI_Err_create_code(const char *myname, const char *filename, int my_errno)
{
int error_code = MPI_SUCCESS;
if (!my_errno)
return MPI_SUCCESS;
/* --BEGIN ERROR HANDLING-- */
switch (my_errno) {
case EACCES:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname,
__LINE__, MPI_ERR_ACCESS,
"**fileaccess", "**fileaccess %s", filename);
break;
case ENAMETOOLONG:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname,
__LINE__, MPI_ERR_BAD_FILE,
"**filenamelong",
"**filenamelong %s %d", filename, strlen(filename));
break;
case ENOENT:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname,
__LINE__, MPI_ERR_NO_SUCH_FILE,
"**filenoexist", "**filenoexist %s", filename);
break;
case EISDIR:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE,
myname, __LINE__,
MPI_ERR_BAD_FILE,
"**filenamedir", "**filenamedir %s", filename);
break;
case EROFS:
/* Read only file or file system and write access requested */
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname,
__LINE__, MPI_ERR_READ_ONLY, "**ioneedrd", 0);
break;
case EEXIST:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname,
__LINE__, MPI_ERR_FILE_EXISTS, "**fileexist", 0);
break;
case ENOTDIR:
case ELOOP:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE,
myname, __LINE__,
MPI_ERR_BAD_FILE,
"**filenamedir", "**filenamedir %s", filename);
break;
case ENOSPC:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname, __LINE__,
MPI_ERR_NO_SPACE, "**filenospace", 0);
break;
case EDQUOT:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname, __LINE__,
MPI_ERR_QUOTA, "**filequota", 0);
break;
default:
error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
myname, __LINE__, MPI_ERR_IO, "**io",
"**io %s", strerror(my_errno));
break;
}
/* --END ERROR HANDLING-- */
return error_code;
}
|