00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "adio.h"
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 void ADIOI_Shfp_fname(ADIO_File fd, int rank)
00021 {
00022 double tm;
00023 int i, len;
00024 char *slash, *ptr, tmp[128];
00025
00026 fd->shared_fp_fname = (char *) ADIOI_Malloc(256);
00027
00028 if (!rank) {
00029 tm = MPI_Wtime();
00030 while (tm > 1000000000.0) tm -= 1000000000.0;
00031 i = (int) tm;
00032 tm = tm - (double) i;
00033 tm *= 1000000.0;
00034 i = (int) tm;
00035
00036 strcpy(fd->shared_fp_fname, fd->filename);
00037
00038 #ifdef ROMIO_NTFS
00039 slash = strrchr(fd->filename, '\\');
00040 #else
00041 slash = strrchr(fd->filename, '/');
00042 #endif
00043 if (!slash) {
00044 strcpy(fd->shared_fp_fname, ".");
00045 strcpy(fd->shared_fp_fname + 1, fd->filename);
00046 }
00047 else {
00048 ptr = slash;
00049 #ifdef ROMIO_NTFS
00050 slash = strrchr(fd->shared_fp_fname, '\\');
00051 #else
00052 slash = strrchr(fd->shared_fp_fname, '/');
00053 #endif
00054 strcpy(slash + 1, ".");
00055 strcpy(slash + 2, ptr + 1);
00056 }
00057
00058 sprintf(tmp, ".shfp.%d", i);
00059 strcat(fd->shared_fp_fname, tmp);
00060
00061 len = strlen(fd->shared_fp_fname);
00062 MPI_Bcast(&len, 1, MPI_INT, 0, fd->comm);
00063 MPI_Bcast(fd->shared_fp_fname, len+1, MPI_CHAR, 0, fd->comm);
00064 }
00065 else {
00066 MPI_Bcast(&len, 1, MPI_INT, 0, fd->comm);
00067 MPI_Bcast(fd->shared_fp_fname, len+1, MPI_CHAR, 0, fd->comm);
00068 }
00069 }