00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "ad_gridftp.h"
00028 #include "adioi.h"
00029
00030 void ADIOI_GRIDFTP_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
00031 {
00032
00033 if (!(fd->info))
00034 {
00035 if ( users_info==MPI_INFO_NULL )
00036 {
00037
00038 MPI_Info_create(&(fd->info));
00039 }
00040 else
00041 {
00042 MPI_Info_dup(users_info,&(fd->info));
00043 }
00044 }
00045 else
00046 {
00047 int i,nkeys,valuelen,flag;
00048 char key[MPI_MAX_INFO_KEY], value[MPI_MAX_INFO_VAL];
00049
00050 if ( users_info!=MPI_INFO_NULL )
00051 {
00052 MPI_Info_get_nkeys(users_info,&nkeys);
00053 for (i=0;i<nkeys;i++)
00054 {
00055 MPI_Info_get_nthkey(users_info,i,key);
00056 MPI_Info_get_valuelen(users_info,key,&valuelen,&flag);
00057 if (flag)
00058 {
00059 ADIOI_Info_get(users_info,key,valuelen,value,&flag);
00060 if (flag) ADIOI_Info_set(fd->info,key,value);
00061 }
00062 }
00063 }
00064 }
00065
00066
00067 ADIOI_GEN_SetInfo(fd, users_info, error_code);
00068 }