root/ompi/mca/io/romio321/romio/mpi2-other/info/fortran/info_setf.c

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

DEFINITIONS

This source file includes following definitions.
  1. mpi_info_set_

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
   2 /* 
   3  *
   4  *   Copyright (C) 1997 University of Chicago. 
   5  *   See COPYRIGHT notice in top-level directory.
   6  */
   7 
   8 #include "mpio.h"
   9 #include "adio.h"
  10 
  11 
  12 #if defined(MPIO_BUILD_PROFILING) || defined(HAVE_WEAK_SYMBOLS)
  13 #ifdef FORTRANCAPS
  14 #define mpi_info_set_ PMPI_INFO_SET
  15 #elif defined(FORTRANDOUBLEUNDERSCORE)
  16 #define mpi_info_set_ pmpi_info_set__
  17 #elif !defined(FORTRANUNDERSCORE)
  18 #if defined(HPUX) || defined(SPPUX)
  19 #pragma _HP_SECONDARY_DEF pmpi_info_set pmpi_info_set_
  20 #endif
  21 #define mpi_info_set_ pmpi_info_set
  22 #else
  23 #if defined(HPUX) || defined(SPPUX)
  24 #pragma _HP_SECONDARY_DEF pmpi_info_set_ pmpi_info_set
  25 #endif
  26 #define mpi_info_set_ pmpi_info_set_
  27 #endif
  28 
  29 #if defined(HAVE_WEAK_SYMBOLS)
  30 #if defined(HAVE_PRAGMA_WEAK)
  31 #if defined(FORTRANCAPS)
  32 #pragma weak MPI_INFO_SET = PMPI_INFO_SET
  33 #elif defined(FORTRANDOUBLEUNDERSCORE)
  34 #pragma weak mpi_info_set__ = pmpi_info_set__
  35 #elif !defined(FORTRANUNDERSCORE)
  36 #pragma weak mpi_info_set = pmpi_info_set
  37 #else
  38 #pragma weak mpi_info_set_ = pmpi_info_set_
  39 #endif
  40 
  41 #elif defined(HAVE_PRAGMA_HP_SEC_DEF)
  42 #if defined(FORTRANCAPS)
  43 #pragma _HP_SECONDARY_DEF PMPI_INFO_SET MPI_INFO_SET
  44 #elif defined(FORTRANDOUBLEUNDERSCORE)
  45 #pragma _HP_SECONDARY_DEF pmpi_info_set__ mpi_info_set__
  46 #elif !defined(FORTRANUNDERSCORE)
  47 #pragma _HP_SECONDARY_DEF pmpi_info_set mpi_info_set
  48 #else
  49 #pragma _HP_SECONDARY_DEF pmpi_info_set_ mpi_info_set_
  50 #endif
  51 
  52 #elif defined(HAVE_PRAGMA_CRI_DUP)
  53 #if defined(FORTRANCAPS)
  54 #pragma _CRI duplicate MPI_INFO_SET as PMPI_INFO_SET
  55 #elif defined(FORTRANDOUBLEUNDERSCORE)
  56 #pragma _CRI duplicate mpi_info_set__ as pmpi_info_set__
  57 #elif !defined(FORTRANUNDERSCORE)
  58 #pragma _CRI duplicate mpi_info_set as pmpi_info_set
  59 #else
  60 #pragma _CRI duplicate mpi_info_set_ as pmpi_info_set_
  61 #endif
  62 
  63 /* end of weak pragmas */
  64 #endif
  65 /* Include mapping from MPI->PMPI */
  66 #include "mpioprof.h"
  67 #endif
  68 
  69 #else
  70 
  71 #ifdef FORTRANCAPS
  72 #define mpi_info_set_ MPI_INFO_SET
  73 #elif defined(FORTRANDOUBLEUNDERSCORE)
  74 #define mpi_info_set_ mpi_info_set__
  75 #elif !defined(FORTRANUNDERSCORE)
  76 #if defined(HPUX) || defined(SPPUX)
  77 #pragma _HP_SECONDARY_DEF mpi_info_set mpi_info_set_
  78 #endif
  79 #define mpi_info_set_ mpi_info_set
  80 #else
  81 #if defined(HPUX) || defined(SPPUX)
  82 #pragma _HP_SECONDARY_DEF mpi_info_set_ mpi_info_set
  83 #endif
  84 #endif
  85 #endif
  86 
  87 
  88 void mpi_info_set_(MPI_Fint *info, char *key, char *value, int *ierr, 
  89                    int keylen, int vallen)
  90 {
  91     MPI_Info info_c;
  92     char *newkey, *newvalue;
  93     int new_keylen, new_vallen, lead_blanks, i;
  94 
  95     if (key <= (char *) 0) {
  96         FPRINTF(stderr, "MPI_Info_set: key is an invalid address\n");
  97         MPI_Abort(MPI_COMM_WORLD, 1);
  98     }
  99     if (value <= (char *) 0) {
 100         FPRINTF(stderr, "MPI_Info_set: value is an invalid address\n");
 101         MPI_Abort(MPI_COMM_WORLD, 1);
 102     }
 103 
 104     /* strip leading and trailing blanks in key */
 105     lead_blanks = 0;
 106     for (i=0; i<keylen; i++) 
 107         if (key[i] == ' ') lead_blanks++;
 108         else break;
 109 
 110     for (i=keylen-1; i>=0; i--) if (key[i] != ' ') break;
 111     if (i < 0) {
 112         FPRINTF(stderr, "MPI_Info_set: key is a blank string\n");
 113         MPI_Abort(MPI_COMM_WORLD, 1);
 114     }
 115     new_keylen = i + 1 - lead_blanks;
 116     key += lead_blanks;
 117 
 118     newkey = (char *) ADIOI_Malloc((new_keylen+1)*sizeof(char));
 119     ADIOI_Strncpy(newkey, key, new_keylen);
 120     newkey[new_keylen] = '\0';
 121 
 122 
 123     /* strip leading and trailing blanks in value */
 124     lead_blanks = 0;
 125     for (i=0; i<vallen; i++) 
 126         if (value[i] == ' ') lead_blanks++;
 127         else break;
 128 
 129     for (i=vallen-1; i>=0; i--) if (value[i] != ' ') break;
 130     if (i < 0) {
 131         FPRINTF(stderr, "MPI_Info_set: value is a blank string\n");
 132         MPI_Abort(MPI_COMM_WORLD, 1);
 133     }
 134     new_vallen = i + 1 - lead_blanks;
 135     value += lead_blanks;
 136 
 137     newvalue = (char *) ADIOI_Malloc((new_vallen+1)*sizeof(char));
 138     ADIOI_Strncpy(newvalue, value, new_vallen);
 139     newvalue[new_vallen] = '\0';
 140 
 141  
 142     info_c = MPI_Info_f2c(*info);
 143     *ierr = MPI_Info_set(info_c, newkey, newvalue);
 144     ADIOI_Free(newkey);
 145     ADIOI_Free(newvalue);
 146 }

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