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 }