Index: README
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/README,v
retrieving revision 1.40
retrieving revision 1.41
diff -c -r1.40 -r1.41
*** README	2003/01/03 15:08:04	1.40
--- README	2003/01/09 21:51:28	1.41
***************
*** 6,13 ****
                                   David Ashton
                                   Anthony Chan
  				  Bill Gropp
  				  Rusty Lusk
!                                    Robb Ross
                                   Rajeev Thakur
                                   Brian Toonen
  
--- 6,14 ----
                                   David Ashton
                                   Anthony Chan
  				  Bill Gropp
+                                   Rob Latham
  				  Rusty Lusk
!                                    Rob Ross
                                   Rajeev Thakur
                                   Brian Toonen
  
Index: configure
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/configure,v
retrieving revision 1.338
retrieving revision 1.342
diff -c -r1.338 -r1.342
*** configure	2002/12/03 13:54:02	1.338
--- configure	2003/01/13 21:34:56	1.342
***************
*** 2466,2475 ****
  # just use prefix=localdir
  # Alternate is to use build/<arch>/<device>/include
  # Include dir for USER PROGRAMS
! if test -z "$prefix" ; then
!     prefix=$MPIR_HOME
! fi
! includedir="${prefix}/include"
  
  #
  # We can't use a relative srcdir path because autoconf1 has a bug that
--- 2466,2473 ----
  # just use prefix=localdir
  # Alternate is to use build/<arch>/<device>/include
  # Include dir for USER PROGRAMS
! if test -z "$prefix" ; then prefix=$MPIR_HOME ; fi
! if test -z "$includedir" ; then includedir="${prefix}/include" ; fi
  
  #
  # We can't use a relative srcdir path because autoconf1 has a bug that
***************
*** 9303,9308 ****
--- 9301,9307 ----
  cat > conftest.$ac_ext <<EOF
  #include "confdefs.h"
  
+ extern int PFoo(int a);
  #pragma weak PFoo = Foo
  int Foo(a) { return a; }
  
***************
*** 9363,9368 ****
--- 9362,9368 ----
  fi
      rm -f conftest*
      cat >>conftest1.c <<EOF
+ extern int PFoo(int a);
  #pragma weak PFoo = Foo
  int Foo(int);
  int Foo(a) { return a; }
***************
*** 15815,15821 ****
                                    --with-f2cmpilibs=-lf$MPILIBNAME \
                                    --with-flib_path_leader=$LIB_PATH_LEADER \
                                    --prefix=${prefix} $enable_args $with_args \
!                                   $MPE_ARGS )
      if test $? = 0 ; then
          echo "Done configuring MPE Profiling Libraries" ; echo
      else
--- 15815,15823 ----
                                    --with-f2cmpilibs=-lf$MPILIBNAME \
                                    --with-flib_path_leader=$LIB_PATH_LEADER \
                                    --prefix=${prefix} $enable_args $with_args \
!                                   --libdir=${libdir} --bindir=${bindir} \
! 				  --includedir=${includedir} \
! 				  $MPE_ARGS )
      if test $? = 0 ; then
          echo "Done configuring MPE Profiling Libraries" ; echo
      else
Index: configure.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/configure.in,v
retrieving revision 1.341
retrieving revision 1.345
diff -c -r1.341 -r1.345
*** configure.in	2002/12/02 23:22:26	1.341
--- configure.in	2003/01/13 21:34:57	1.345
***************
*** 1635,1644 ****
  # just use prefix=localdir
  # Alternate is to use build/<arch>/<device>/include
  # Include dir for USER PROGRAMS
! if test -z "$prefix" ; then
!     prefix=$MPIR_HOME
! fi
! includedir="${prefix}/include"
  AC_SUBST(includedir)
  #
  # We can't use a relative srcdir path because autoconf1 has a bug that
--- 1635,1642 ----
  # just use prefix=localdir
  # Alternate is to use build/<arch>/<device>/include
  # Include dir for USER PROGRAMS
! if test -z "$prefix" ; then prefix=$MPIR_HOME ; fi
! if test -z "$includedir" ; then includedir="${prefix}/include" ; fi
  AC_SUBST(includedir)
  #
  # We can't use a relative srcdir path because autoconf1 has a bug that
***************
*** 2659,2664 ****
--- 2657,2663 ----
  if test $TRY_WEAK_SYMBOLS = 1 ; then
    AC_MSG_CHECKING(for weak symbol support)
    AC_TRY_LINK([
+ extern int PFoo(int a);
  #pragma weak PFoo = Foo
  int Foo(a) { return a; }
  ],[return PFoo(1);],has_pragma_weak=1)
***************
*** 2670,2675 ****
--- 2669,2675 ----
      AC_MSG_CHECKING([that weak symbols are visible to other files])
      rm -f conftest*
      cat >>conftest1.c <<EOF
+ extern int PFoo(int a);
  #pragma weak PFoo = Foo
  int Foo(int);
  int Foo(a) { return a; }
***************
*** 3755,3761 ****
                                    --with-f2cmpilibs=-lf$MPILIBNAME \
                                    --with-flib_path_leader=$LIB_PATH_LEADER \
                                    --prefix=${prefix} $enable_args $with_args \
!                                   $MPE_ARGS )
      if test $? = 0 ; then
          echo "Done configuring MPE Profiling Libraries" ; echo
      else
--- 3755,3763 ----
                                    --with-f2cmpilibs=-lf$MPILIBNAME \
                                    --with-flib_path_leader=$LIB_PATH_LEADER \
                                    --prefix=${prefix} $enable_args $with_args \
!                                   --libdir=${libdir} --bindir=${bindir} \
! 				  --includedir=${includedir} \
! 				  $MPE_ARGS )
      if test $? = 0 ; then
          echo "Done configuring MPE Profiling Libraries" ; echo
      else
Index: examples/test/command/runtests.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/examples/test/command/runtests.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** examples/test/command/runtests.in	2000/08/16 19:22:37	1.2
--- examples/test/command/runtests.in	2003/01/10 23:24:57	1.3
***************
*** 4,13 ****
  #   -Dname=\"foo bar\"
  #   -Dname='"foo bar"'
  #   
! mpicc=@MPICC@
! mpiCC=@MPICPLUSPLUS@
! mpif77=@MPIF77@
! mpif90=@MPIF90@
  
  # Create test files
  trap 'rm -f a.out rtest* *.o' 0
--- 4,13 ----
  #   -Dname=\"foo bar\"
  #   -Dname='"foo bar"'
  #   
! mpicc="@MPICC@"
! mpiCC="@MPICPLUSPLUS@"
! mpif77="@MPIF77@"
! mpif90="@MPIF90@"
  
  # Create test files
  trap 'rm -f a.out rtest* *.o' 0
Index: include/mpi.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/include/mpi.h,v
retrieving revision 1.40
retrieving revision 1.43
diff -c -r1.40 -r1.43
*** include/mpi.h	2002/08/01 21:08:21	1.40
--- include/mpi.h	2003/01/10 15:55:40	1.43
***************
*** 1,5 ****
  /*
!  *  $Id: mpi.h,v 1.40 2002/08/01 21:08:21 lacour Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      All rights reserved.  See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: mpi.h,v 1.43 2003/01/10 15:55:40 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      All rights reserved.  See COPYRIGHT in top-level directory.
***************
*** 205,211 ****
  #define MPI_VERSION    1
  #define MPI_SUBVERSION 2
  #define MPICH_NAME     1
! #define MPICH_VERSION "1.2.4"
  
  /********************** MPI-2 FEATURES BEGIN HERE ***************************/
  #define MPICH_HAS_C2F
--- 205,211 ----
  #define MPI_VERSION    1
  #define MPI_SUBVERSION 2
  #define MPICH_NAME     1
! #define MPICH_VERSION "1.2.5"
  
  /********************** MPI-2 FEATURES BEGIN HERE ***************************/
  #define MPICH_HAS_C2F
***************
*** 286,291 ****
--- 286,305 ----
  #define MPICHX_LAN_LEVEL 1    /* communicate thru LAN TCP links */
  #define MPICHX_HOST_LEVEL 2   /* communicate inside a machine thru TCP */
  #define MPICHX_VMPI_LEVEL 3   /* use vendor-MPI library */
+ 
+ /* START GRIDFTP */
+ /******** Globus-2 device use of GridFTP ********/
+ /* Attribute keys.  These are set to MPI_KEYVAL_INVALID by default */
+ extern int MPICHX_PARALLELSOCKETS_PARAMETERS;
+ struct gridftp_params
+ {
+     int partner_rank;
+ 
+     int nsocket_pairs;
+     int max_outstanding_writes;
+     int tcp_buffsize;
+ }; /* end struct gridftp_params */
+ /* END GRIDFTP */
  
  /******** End of Globus-2 device keys *************************************/
  
Index: include/patchlevel.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/include/patchlevel.h,v
retrieving revision 1.13
retrieving revision 1.15
diff -c -r1.13 -r1.15
*** include/patchlevel.h	2002/12/22 16:29:37	1.13
--- include/patchlevel.h	2003/01/13 22:19:18	1.15
***************
*** 2,13 ****
  #define PATCHLEVEL_MAJOR 1
  #define PATCHLEVEL_MINOR 2
  #define PATCHLEVEL_SUBMINOR 5
! #define PATCHLEVEL_RELEASE_KIND "release"
  #ifndef PATCHLEVEL_RELEASE_DATE 
  #ifdef RELEASE_DATE
  #define PATCHLEVEL_RELEASE_DATE RELEASE_DATE
  #else
! #define PATCHLEVEL_RELEASE_DATE "$Date: 2002/12/22 16:29:37 $"
  #endif
  #endif
  
--- 2,13 ----
  #define PATCHLEVEL_MAJOR 1
  #define PATCHLEVEL_MINOR 2
  #define PATCHLEVEL_SUBMINOR 5
! #define PATCHLEVEL_RELEASE_KIND "release first patches"
  #ifndef PATCHLEVEL_RELEASE_DATE 
  #ifdef RELEASE_DATE
  #define PATCHLEVEL_RELEASE_DATE RELEASE_DATE
  #else
! #define PATCHLEVEL_RELEASE_DATE "$Date: 2003/01/13 22:19:18 $"
  #endif
  #endif
  
Index: mpe/sbin/mpeinstall.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpe/sbin/mpeinstall.in,v
retrieving revision 1.7
retrieving revision 1.8
diff -c -r1.7 -r1.8
*** mpe/sbin/mpeinstall.in	2002/04/02 19:53:25	1.7
--- mpe/sbin/mpeinstall.in	2003/01/13 17:26:01	1.8
***************
*** 76,82 ****
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=${sbindir}/${UNINSTALL_base}
  fi
  
  for arg in "$@" ; do
--- 76,82 ----
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=$DESTDIR${sbindir}/${UNINSTALL_base}
  fi
  
  for arg in "$@" ; do
***************
*** 155,164 ****
  else
      mode=$3
  fi
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 155,165 ----
  else
      mode=$3
  fi
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 216,222 ****
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
--- 217,223 ----
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $DESTDIR$2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
***************
*** 230,249 ****
          done
          # cd back where it comes from
          # counter the effect of "cd $1" above,
!         # so "for" loop stiil works
          cd $4
      fi 
  fi
  }
  
- 
- 
  #
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $1 ] ; then
!     dir=`echo $1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
--- 231,248 ----
          done
          # cd back where it comes from
          # counter the effect of "cd $1" above,
!         # so "for" loop still works
          cd $4
      fi 
  fi
  }
  
  #
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $DESTDIR$1 ] ; then
!     dir=`echo $DESTDIR$1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
***************
*** 279,288 ****
  # Fixup files that need #...# replaced
  #
  FixupFile() {
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 278,288 ----
  # Fixup files that need #...# replaced
  #
  FixupFile() {
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 315,321 ****
  else
      mode=$3
  fi
! $Show chmod $mode $2
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
--- 315,321 ----
  else
      mode=$3
  fi
! $Show chmod $mode $dest
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
***************
*** 375,385 ****
  if [ -n "$includebuild_dir" ] ; then
      if [ -d $includebuild_dir ] ; then
          echo "Copying MPE include files to $includedir"
! 	if [ ! -d $includedir ] ; then
  	    MkDir $includedir
  	fi
  	for file in $MPE_HEADERS ; do
! 	    if [ -f $includebuild_dir/$file -a ! -f $includedir/$file ] ; then
  	        CopyFileP $includebuild_dir/$file $includedir/$file $MODE
  	    fi
  	done
--- 375,385 ----
  if [ -n "$includebuild_dir" ] ; then
      if [ -d $includebuild_dir ] ; then
          echo "Copying MPE include files to $includedir"
! 	if [ ! -d $DESTDIR$includedir ] ; then
  	    MkDir $includedir
  	fi
  	for file in $MPE_HEADERS ; do
! 	    if [ -f $includebuild_dir/$file -a ! -f $DESTDIR$includedir/$file ] ; then
  	        CopyFileP $includebuild_dir/$file $includedir/$file $MODE
  	    fi
  	done
***************
*** 401,407 ****
           CopyDirRecurP $binbuild_dir $bindir $XMODE
      fi
      # Create mpereconfig from mpereconfig.in
!     $Show /bin/rm -f $bindir/mpereconfig
      if [ $verbose = 1 ] ; then
          echo "Creating mpereconfig from mpereconfig.in"
      fi
--- 401,407 ----
           CopyDirRecurP $binbuild_dir $bindir $XMODE
      fi
      # Create mpereconfig from mpereconfig.in
!     $Show /bin/rm -f $DESTDIR$bindir/mpereconfig
      if [ $verbose = 1 ] ; then
          echo "Creating mpereconfig from mpereconfig.in"
      fi
***************
*** 441,449 ****
  		-e "s%^ac_given_srcdir=.*$%ac_given_srcdir=%g" \
  		-e '/if test "\$ac_dir/,/^[ ]*fi[ ]*$/d' \
  		-e 's/ac_dir_suffix/ac_dir/' \
!                 > $bindir/mpereconfig.dat
          filelist="$filelist $bindir/mpereconfig.dat"
!         chmod $XMODE $bindir/mpereconfig.dat
      else 
          cat <<.
              cat config.status | \
--- 441,449 ----
  		-e "s%^ac_given_srcdir=.*$%ac_given_srcdir=%g" \
  		-e '/if test "\$ac_dir/,/^[ ]*fi[ ]*$/d' \
  		-e 's/ac_dir_suffix/ac_dir/' \
!                 > ${DESTDIR}$bindir/mpereconfig.dat
          filelist="$filelist $bindir/mpereconfig.dat"
!         chmod $XMODE ${DESTDIR}$bindir/mpereconfig.dat
      else 
          cat <<.
              cat config.status | \
***************
*** 466,474 ****
  		-e "s%^ac_given_srcdir=.*$%ac_given_srcdir=%g" \
  		-e '/if test "\$ac_dir/,/^[ ]*fi[ ]*$/d' \
  		-e 's/ac_dir_suffix/ac_dir/' \
!                 > $bindir/mpereconfig.dat
          filelist="$filelist $bindir/mpereconfig.dat"
!         chmod $XMODE $bindir/mpereconfig.dat
      else 
          cat <<.
              cat config.status | \
--- 466,474 ----
  		-e "s%^ac_given_srcdir=.*$%ac_given_srcdir=%g" \
  		-e '/if test "\$ac_dir/,/^[ ]*fi[ ]*$/d' \
  		-e 's/ac_dir_suffix/ac_dir/' \
!                 > $DESTDIR$bindir/mpereconfig.dat
          filelist="$filelist $bindir/mpereconfig.dat"
!         chmod $XMODE $DESTDIR$bindir/mpereconfig.dat
      else 
          cat <<.
              cat config.status | \
***************
*** 488,510 ****
  CopyDirRecurP $top_srcdir/contrib/test $examplesdir
  
  # Create MPE examples Makefile
! ( cd $examplesdir ; $bindir/mpereconfig Makefile ) 
  filelist="$filelist $examplesdir/Makefile"
  
  if [ -x $bindir/mpirun ] ; then
!     $Show "( cd $examplesdir ; \
               /bin/rm -f mpirun ; \
               ln -s $bindir/mpirun mpirun )"
      filelist="$filelist $examplesdir/mpirun" 
  fi
!  
! if [ -f $examplesdir/Makefile ] ; then
      echo "About to run installation test for C programs..."
!     $Show "( cd $examplesdir ; $MAKE linktest_C )"
      if test "$NOF77" = "0" ; then
          echo "About to run installation test for Fortran programs..."
          $Show "( cd $examplesdir ; $MAKE linktest_f77 )"
      fi
  fi
  
  # Remove old uninstall file
--- 488,512 ----
  CopyDirRecurP $top_srcdir/contrib/test $examplesdir
  
  # Create MPE examples Makefile
! ( cd $DESTDIR$examplesdir ; $bindir/mpereconfig Makefile ) 
  filelist="$filelist $examplesdir/Makefile"
  
  if [ -x $bindir/mpirun ] ; then
!     $Show "( cd $DESTDIR$examplesdir ; \
               /bin/rm -f mpirun ; \
               ln -s $bindir/mpirun mpirun )"
      filelist="$filelist $examplesdir/mpirun" 
  fi
! 
! if [ -z "$DESTDIR" ]; then 
!   if [ -f $DESTDIR$examplesdir/Makefile ] ; then
      echo "About to run installation test for C programs..."
!     $Show "( cd $DESTDIR$examplesdir ; $MAKE linktest_C )"
      if test "$NOF77" = "0" ; then
          echo "About to run installation test for Fortran programs..."
          $Show "( cd $examplesdir ; $MAKE linktest_f77 )"
      fi
+   fi
  fi
  
  # Remove old uninstall file
***************
*** 537,543 ****
      fi
  fi
  
! if [ -s $examplesdir/Makefile ] ; then
      echo "( cd $examplesdir ; $MAKE clean )" >> $UNINSTALLFILE
  fi
  
--- 539,545 ----
      fi
  fi
  
! if [ -s $DESTDIR$examplesdir/Makefile ] ; then
      echo "( cd $examplesdir ; $MAKE clean )" >> $UNINSTALLFILE
  fi
  
Index: mpe/slog_api/sbin/install-slog.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpe/slog_api/sbin/install-slog.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** mpe/slog_api/sbin/install-slog.in	2000/06/29 05:51:41	1.1
--- mpe/slog_api/sbin/install-slog.in	2003/01/13 17:26:01	1.2
***************
*** 68,74 ****
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=${sbindir}/${UNINSTALL_base}
  fi
  
  # Update the $prefix if necessary
--- 68,74 ----
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=$DESTDIR${sbindir}/${UNINSTALL_base}
  fi
  
  # Update the $prefix if necessary
***************
*** 139,148 ****
  else
      mode=$3
  fi
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 139,149 ----
  else
      mode=$3
  fi
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 204,210 ****
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
--- 205,211 ----
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $DESTDIR$2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
***************
*** 230,237 ****
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $1 ] ; then
!     dir=`echo $1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
--- 231,238 ----
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $DESTDIR$1 ] ; then
!     dir=`echo $DESTDIR$1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
***************
*** 299,305 ****
      mandir=$prefix/man
      htmldir=$prefix/html
      if [ $appendUninstall = 0 ] ; then
! 	UNINSTALLFILE=${sbindir}/${UNINSTALL_base}
      fi
  fi
  
--- 300,306 ----
      mandir=$prefix/man
      htmldir=$prefix/html
      if [ $appendUninstall = 0 ] ; then
! 	UNINSTALLFILE=$DESTDIR${sbindir}/${UNINSTALL_base}
      fi
  fi
  
Index: mpe/viewers/jumpshot-2/aclocal_java.m4
===================================================================
RCS file: /home/MPI/cvsMaster/jumpshot-2.0/aclocal_java.m4,v
retrieving revision 1.6
retrieving revision 1.7
diff -c -r1.6 -r1.7
*** mpe/viewers/jumpshot-2/aclocal_java.m4	2001/07/12 18:00:44	1.6
--- mpe/viewers/jumpshot-2/aclocal_java.m4	2003/01/10 23:25:14	1.7
***************
*** 143,148 ****
--- 143,150 ----
  fi
  #
  AC_MSG_CHECKING(for Java in known locations)
+ # Make sure that we have glob expansion turned on
+ set +f
  for dir in \
      /usr \
      /usr/jdk* \
Index: mpe/viewers/jumpshot-2/configure
===================================================================
RCS file: /home/MPI/cvsMaster/jumpshot-2.0/configure,v
retrieving revision 1.38
retrieving revision 1.39
diff -c -r1.38 -r1.39
*** mpe/viewers/jumpshot-2/configure	2002/06/05 18:18:04	1.38
--- mpe/viewers/jumpshot-2/configure	2003/01/13 21:34:36	1.39
***************
*** 1029,1034 ****
--- 1029,1036 ----
  #
  echo $ac_n "checking for Java in known locations""... $ac_c" 1>&6
  echo "configure:1032: checking for Java in known locations" >&5
+ # Make sure that we have glob expansion turned on
+ set +f
  for dir in \
      /usr \
      /usr/jdk* \
***************
*** 1074,1080 ****
          if test -n "${JAVA_HOME}" ; then
              echo "$ac_t""found ${JAVA_HOME}" 1>&6
              echo $ac_n "checking if ${JAVA_HOME}/bin/javac compiles""... $ac_c" 1>&6
! echo "configure:1078: checking if ${JAVA_HOME}/bin/javac compiles" >&5
              
  pac_JC="${JAVA_HOME}/bin/javac"
  pac_JFLAGS=""
--- 1076,1082 ----
          if test -n "${JAVA_HOME}" ; then
              echo "$ac_t""found ${JAVA_HOME}" 1>&6
              echo $ac_n "checking if ${JAVA_HOME}/bin/javac compiles""... $ac_c" 1>&6
! echo "configure:1080: checking if ${JAVA_HOME}/bin/javac compiles" >&5
              
  pac_JC="${JAVA_HOME}/bin/javac"
  pac_JFLAGS=""
***************
*** 1093,1099 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1097: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1095,1101 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1099: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1105,1111 ****
              else
                  echo "$ac_t""no" 1>&6
                  echo $ac_n "checking for working Java in known locations""... $ac_c" 1>&6
! echo "configure:1109: checking for working Java in known locations" >&5
                  JAVA_HOME=""
              fi
          fi
--- 1107,1113 ----
              else
                  echo "$ac_t""no" 1>&6
                  echo $ac_n "checking for working Java in known locations""... $ac_c" 1>&6
! echo "configure:1111: checking for working Java in known locations" >&5
                  JAVA_HOME=""
              fi
          fi
***************
*** 1143,1149 ****
  
  if test "$FOUND_ENV_JAVA_HOME" = "no" ; then
      echo $ac_n "checking if $JC compiles""... $ac_c" 1>&6
! echo "configure:1147: checking if $JC compiles" >&5
      if test -x "$JC" ; then
          
  pac_JC="$JC"
--- 1145,1151 ----
  
  if test "$FOUND_ENV_JAVA_HOME" = "no" ; then
      echo $ac_n "checking if $JC compiles""... $ac_c" 1>&6
! echo "configure:1149: checking if $JC compiles" >&5
      if test -x "$JC" ; then
          
  pac_JC="$JC"
***************
*** 1163,1169 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1167: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1165,1171 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1169: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1197,1203 ****
  
  for exe in "$JAR" "$JVM" ; do
      echo $ac_n "checking if $exe exists""... $ac_c" 1>&6
! echo "configure:1201: checking if $exe exists" >&5
      if test -x "$exe" ; then
          echo "$ac_t""yes" 1>&6
      else
--- 1199,1205 ----
  
  for exe in "$JAR" "$JVM" ; do
      echo $ac_n "checking if $exe exists""... $ac_c" 1>&6
! echo "configure:1203: checking if $exe exists" >&5
      if test -x "$exe" ; then
          echo "$ac_t""yes" 1>&6
      else
***************
*** 1214,1220 ****
  done
  
  echo $ac_n "checking if $JC compiles Swing-1.1.1 code""... $ac_c" 1>&6
! echo "configure:1218: checking if $JC compiles Swing-1.1.1 code" >&5
  
  pac_JC="$JC"
  pac_JFLAGS=""
--- 1216,1222 ----
  done
  
  echo $ac_n "checking if $JC compiles Swing-1.1.1 code""... $ac_c" 1>&6
! echo "configure:1220: checking if $JC compiles Swing-1.1.1 code" >&5
  
  pac_JC="$JC"
  pac_JFLAGS=""
***************
*** 1236,1242 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1240: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1238,1244 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1242: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1266,1272 ****
  
  if test "$enable_internalswing" = "yes" ; then
      echo $ac_n "checking if $JC with swing.jar compiles Swing-1.0.3 code""... $ac_c" 1>&6
! echo "configure:1270: checking if $JC with swing.jar compiles Swing-1.0.3 code" >&5
      
  pac_JC="$JC"
  pac_JFLAGS="-classpath $JAVA_LIBS:$srcdir/swing/swing.jar:. -d ."
--- 1268,1274 ----
  
  if test "$enable_internalswing" = "yes" ; then
      echo $ac_n "checking if $JC with swing.jar compiles Swing-1.0.3 code""... $ac_c" 1>&6
! echo "configure:1272: checking if $JC with swing.jar compiles Swing-1.0.3 code" >&5
      
  pac_JC="$JC"
  pac_JFLAGS="-classpath $JAVA_LIBS:$srcdir/swing/swing.jar:. -d ."
***************
*** 1288,1294 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1292: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1290,1296 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1294: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1314,1320 ****
  # Filter out the version of JDK that causes problem
  if test "$enable_checkversion" = "yes" ; then
      echo $ac_n "checking for Java version""... $ac_c" 1>&6
! echo "configure:1318: checking for Java version" >&5
      VERSION=`$JAVA_HOME/bin/java -fullversion 2>&1`
      case "$VERSION" in
          *1.0*)
--- 1316,1322 ----
  # Filter out the version of JDK that causes problem
  if test "$enable_checkversion" = "yes" ; then
      echo $ac_n "checking for Java version""... $ac_c" 1>&6
! echo "configure:1320: checking for Java version" >&5
      VERSION=`$JAVA_HOME/bin/java -fullversion 2>&1`
      case "$VERSION" in
          *1.0*)
***************
*** 1396,1402 ****
      SWING_LIBRARIES=`echo $SWING_LIBS | sed 's/:/ /g'`
      for library in $SWING_LIBRARIES ; do
          echo $ac_n "checking for $library""... $ac_c" 1>&6
! echo "configure:1400: checking for $library" >&5
          if test -f "$library" ; then
              echo "$ac_t""yes" 1>&6
          else
--- 1398,1404 ----
      SWING_LIBRARIES=`echo $SWING_LIBS | sed 's/:/ /g'`
      for library in $SWING_LIBRARIES ; do
          echo $ac_n "checking for $library""... $ac_c" 1>&6
! echo "configure:1402: checking for $library" >&5
          if test -f "$library" ; then
              echo "$ac_t""yes" 1>&6
          else
Index: mpe/viewers/jumpshot-3/aclocal_java.m4
===================================================================
RCS file: /home/MPI/cvsMaster/jumpshot-3/aclocal_java.m4,v
retrieving revision 1.9
retrieving revision 1.11
diff -c -r1.9 -r1.11
*** mpe/viewers/jumpshot-3/aclocal_java.m4	2001/07/19 18:14:50	1.9
--- mpe/viewers/jumpshot-3/aclocal_java.m4	2003/01/13 21:34:36	1.11
***************
*** 143,154 ****
--- 143,157 ----
  fi
  #
  AC_MSG_CHECKING(for Java in known locations)
+ # Make sure that we have glob expansion turned on
+ set +f
  reverse_dirs=""
  for dir in \
      /usr \
      /usr/jdk* \
      /usr/j2sdk* \
      /usr/java* \
+     /usr/java/j2sdk* \
      /usr/local \
      /usr/local/java* \
      /usr/local/jdk* \
Index: mpe/viewers/jumpshot-3/configure
===================================================================
RCS file: /home/MPI/cvsMaster/jumpshot-3/configure,v
retrieving revision 1.43
retrieving revision 1.44
diff -c -r1.43 -r1.44
*** mpe/viewers/jumpshot-3/configure	2002/06/05 18:19:03	1.43
--- mpe/viewers/jumpshot-3/configure	2003/01/13 21:34:37	1.44
***************
*** 1029,1040 ****
--- 1029,1043 ----
  #
  echo $ac_n "checking for Java in known locations""... $ac_c" 1>&6
  echo "configure:1032: checking for Java in known locations" >&5
+ # Make sure that we have glob expansion turned on
+ set +f
  reverse_dirs=""
  for dir in \
      /usr \
      /usr/jdk* \
      /usr/j2sdk* \
      /usr/java* \
+     /usr/java/j2sdk* \
      /usr/local \
      /usr/local/java* \
      /usr/local/jdk* \
***************
*** 1095,1101 ****
          if test -n "${JAVA_HOME}" ; then
              echo "$ac_t""found ${JAVA_HOME}" 1>&6
              echo $ac_n "checking if ${JAVA_HOME}/bin/javac compiles""... $ac_c" 1>&6
! echo "configure:1099: checking if ${JAVA_HOME}/bin/javac compiles" >&5
              
  pac_JC="${JAVA_HOME}/bin/javac"
  pac_JFLAGS=""
--- 1098,1104 ----
          if test -n "${JAVA_HOME}" ; then
              echo "$ac_t""found ${JAVA_HOME}" 1>&6
              echo $ac_n "checking if ${JAVA_HOME}/bin/javac compiles""... $ac_c" 1>&6
! echo "configure:1102: checking if ${JAVA_HOME}/bin/javac compiles" >&5
              
  pac_JC="${JAVA_HOME}/bin/javac"
  pac_JFLAGS=""
***************
*** 1114,1120 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1118: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1117,1123 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1121: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1126,1132 ****
              else
                  echo "$ac_t""no" 1>&6
                  echo $ac_n "checking for working Java in known locations""... $ac_c" 1>&6
! echo "configure:1130: checking for working Java in known locations" >&5
                  JAVA_HOME=""
              fi
          fi
--- 1129,1135 ----
              else
                  echo "$ac_t""no" 1>&6
                  echo $ac_n "checking for working Java in known locations""... $ac_c" 1>&6
! echo "configure:1133: checking for working Java in known locations" >&5
                  JAVA_HOME=""
              fi
          fi
***************
*** 1165,1171 ****
  
  if test "$FOUND_ENV_JAVA_HOME" = "no" ; then
      echo $ac_n "checking if $JC compiles""... $ac_c" 1>&6
! echo "configure:1169: checking if $JC compiles" >&5
      if test -x "$JC" ; then
          
  pac_JC="$JC"
--- 1168,1174 ----
  
  if test "$FOUND_ENV_JAVA_HOME" = "no" ; then
      echo $ac_n "checking if $JC compiles""... $ac_c" 1>&6
! echo "configure:1172: checking if $JC compiles" >&5
      if test -x "$JC" ; then
          
  pac_JC="$JC"
***************
*** 1185,1191 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1189: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1188,1194 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1192: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1219,1225 ****
  
  for exe in "$RMIC" "$JAR" "$JVM" ; do
      echo $ac_n "checking if $exe exists""... $ac_c" 1>&6
! echo "configure:1223: checking if $exe exists" >&5
      if test -x "$exe" ; then
          echo "$ac_t""yes" 1>&6
      else
--- 1222,1228 ----
  
  for exe in "$RMIC" "$JAR" "$JVM" ; do
      echo $ac_n "checking if $exe exists""... $ac_c" 1>&6
! echo "configure:1226: checking if $exe exists" >&5
      if test -x "$exe" ; then
          echo "$ac_t""yes" 1>&6
      else
***************
*** 1236,1242 ****
  done
  
  echo $ac_n "checking if $JC compiles Swing-1.1.1 code""... $ac_c" 1>&6
! echo "configure:1240: checking if $JC compiles Swing-1.1.1 code" >&5
  
  pac_JC="$JC"
  pac_JFLAGS=""
--- 1239,1245 ----
  done
  
  echo $ac_n "checking if $JC compiles Swing-1.1.1 code""... $ac_c" 1>&6
! echo "configure:1243: checking if $JC compiles Swing-1.1.1 code" >&5
  
  pac_JC="$JC"
  pac_JFLAGS=""
***************
*** 1258,1264 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1262: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1261,1267 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1265: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1288,1294 ****
  
  if test "$enable_internalswing" = "yes" ; then
      echo $ac_n "checking if $JC with swing.jar compiles Swing-1.1.1 code""... $ac_c" 1>&6
! echo "configure:1292: checking if $JC with swing.jar compiles Swing-1.1.1 code" >&5
      
  pac_JC="$JC"
  pac_JFLAGS="-classpath $JAVA_LIBS:$srcdir/swing/swing.jar:. -d ."
--- 1291,1297 ----
  
  if test "$enable_internalswing" = "yes" ; then
      echo $ac_n "checking if $JC with swing.jar compiles Swing-1.1.1 code""... $ac_c" 1>&6
! echo "configure:1295: checking if $JC with swing.jar compiles Swing-1.1.1 code" >&5
      
  pac_JC="$JC"
  pac_JFLAGS="-classpath $JAVA_LIBS:$srcdir/swing/swing.jar:. -d ."
***************
*** 1310,1316 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1314: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
--- 1313,1319 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest.java 1>&5'
!     if { (eval echo configure:1317: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest.class ; then
          rm -rf conftest* ;  pac_java_working=yes 
      else
          rm -rf conftest* ;  pac_java_working=no  
***************
*** 1335,1341 ****
  
  # Try to filter out the broken RMIC from JDK-1.2 pre-release
  echo $ac_n "checking if $RMIC generates stub""... $ac_c" 1>&6
! echo "configure:1339: checking if $RMIC generates stub" >&5
  
  pac_RMIC="$RMIC"
  pac_JRFLAGS="-classpath $JAVA_LIBS:. -d . $JFLAGS"
--- 1338,1344 ----
  
  # Try to filter out the broken RMIC from JDK-1.2 pre-release
  echo $ac_n "checking if $RMIC generates stub""... $ac_c" 1>&6
! echo "configure:1342: checking if $RMIC generates stub" >&5
  
  pac_RMIC="$RMIC"
  pac_JRFLAGS="-classpath $JAVA_LIBS:. -d . $JFLAGS"
***************
*** 1364,1372 ****
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest_remote.java conftest_rmic.java 1>&5'
!     if { (eval echo configure:1368: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest_rmic.class ; then
          pac_jrmic='${pac_RMIC} ${pac_JRFLAGS} conftest_rmic 1>&5'
!         if { (eval echo configure:1370: \"$pac_jrmic\") 1>&5; (eval $pac_jrmic) 2>&5; } && test -s conftest_rmic_Stub.class ; then
              rm -rf conftest* ;  pac_java_working=yes 
          else
              rm -rf conftest* ;  pac_java_working=no  
--- 1367,1375 ----
  EOF
  
      pac_jcompile='${pac_JC} ${pac_JFLAGS} conftest_remote.java conftest_rmic.java 1>&5'
!     if { (eval echo configure:1371: \"$pac_jcompile\") 1>&5; (eval $pac_jcompile) 2>&5; } && test -s conftest_rmic.class ; then
          pac_jrmic='${pac_RMIC} ${pac_JRFLAGS} conftest_rmic 1>&5'
!         if { (eval echo configure:1373: \"$pac_jrmic\") 1>&5; (eval $pac_jrmic) 2>&5; } && test -s conftest_rmic_Stub.class ; then
              rm -rf conftest* ;  pac_java_working=yes 
          else
              rm -rf conftest* ;  pac_java_working=no  
***************
*** 1386,1392 ****
  # Filter out the version of JDK that causes problem
  if test "$enable_checkversion" = "yes" ; then
      echo $ac_n "checking for Java version""... $ac_c" 1>&6
! echo "configure:1390: checking for Java version" >&5
      VERSION=`$JAVA_HOME/bin/java -fullversion 2>&1`
      case "$VERSION" in
  	*1.0*)
--- 1389,1395 ----
  # Filter out the version of JDK that causes problem
  if test "$enable_checkversion" = "yes" ; then
      echo $ac_n "checking for Java version""... $ac_c" 1>&6
! echo "configure:1393: checking for Java version" >&5
      VERSION=`$JAVA_HOME/bin/java -fullversion 2>&1`
      case "$VERSION" in
  	*1.0*)
***************
*** 1449,1455 ****
      SWING_LIBRARIES=`echo $SWING_LIBS | sed 's/:/ /g'`
      for library in $SWING_LIBRARIES ; do
          echo $ac_n "checking for $library""... $ac_c" 1>&6
! echo "configure:1453: checking for $library" >&5
          if test -f "$library" ; then
              echo "$ac_t""yes" 1>&6
          else
--- 1452,1458 ----
      SWING_LIBRARIES=`echo $SWING_LIBS | sed 's/:/ /g'`
      for library in $SWING_LIBRARIES ; do
          echo $ac_n "checking for $library""... $ac_c" 1>&6
! echo "configure:1456: checking for $library" >&5
          if test -f "$library" ; then
              echo "$ac_t""yes" 1>&6
          else
Index: mpe/viewers/sbin/install-viewers.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpe/viewers/sbin/install-viewers.in,v
retrieving revision 1.6
retrieving revision 1.7
diff -c -r1.6 -r1.7
*** mpe/viewers/sbin/install-viewers.in	2001/07/13 12:59:29	1.6
--- mpe/viewers/sbin/install-viewers.in	2003/01/13 17:26:01	1.7
***************
*** 62,68 ****
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=${sbindir}/${UNINSTALL_base}
  fi
  
  # Update the $prefix if necessary
--- 62,68 ----
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=$DESTDIR${sbindir}/${UNINSTALL_base}
  fi
  
  # Update the $prefix if necessary
***************
*** 134,143 ****
  else
      mode=$3
  fi
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 134,144 ----
  else
      mode=$3
  fi
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 200,206 ****
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
--- 201,207 ----
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $DESTDIR$2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
***************
*** 225,232 ****
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $1 ] ; then
!     dir=`echo $1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
--- 226,233 ----
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $DESTDIR$1 ] ; then
!     dir=`echo $DESTDIR$1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
***************
*** 268,277 ****
      # Change the FIRST libpath to the new form.  This allows 
      # the LIB_PATH to contain multiple names, as long as the MPICH libpath
      # is first
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 269,279 ----
      # Change the FIRST libpath to the new form.  This allows 
      # the LIB_PATH to contain multiple names, as long as the MPICH libpath
      # is first
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 301,307 ****
  else
      mode=$3
  fi
! $Show chmod $mode $2
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
--- 303,309 ----
  else
      mode=$3
  fi
! $Show chmod $mode $dest
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
***************
*** 330,336 ****
      echo "Install into $prefix"
  fi
  
! if [ -d $prefix ] ; then
      if [ $verbose = 1 ] ; then echo "using existing directory $prefix" ; fi
  else
      MkDir $prefix
--- 332,338 ----
      echo "Install into $prefix"
  fi
  
! if [ -d $DESTDIR$prefix ] ; then
      if [ $verbose = 1 ] ; then echo "using existing directory $prefix" ; fi
  else
      MkDir $prefix
***************
*** 341,347 ****
      sbindir=$prefix/sbin
      datadir=$prefix/share
      if [ $appendUninstall = 0 ] ; then
!         UNINSTALLFILE=${sbindir}/${UNINSTALL_base}
      fi
  fi
  
--- 343,349 ----
      sbindir=$prefix/sbin
      datadir=$prefix/share
      if [ $appendUninstall = 0 ] ; then
!         UNINSTALLFILE=$DESTDIR${sbindir}/${UNINSTALL_base}
      fi
  fi
  
Index: mpe/viewers/upshot/sbin/install-viewer.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpe/viewers/upshot/sbin/install-viewer.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** mpe/viewers/upshot/sbin/install-viewer.in	2001/07/13 12:59:29	1.2
--- mpe/viewers/upshot/sbin/install-viewer.in	2003/01/13 17:27:29	1.3
***************
*** 60,66 ****
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=${sbindir}/${UNINSTALL_base}
  fi
  
  # Update the $prefix if necessary
--- 60,66 ----
  if [ -z "$UNINSTALLFILE" ] ; then
      INSTALL_base=`basename $0`
      UNINSTALL_base=`echo $INSTALL_base | sed -e 's/install/uninstall/'`
!     UNINSTALLFILE=$DESTDIR${sbindir}/${UNINSTALL_base}
  fi
  
  # Update the $prefix if necessary
***************
*** 132,141 ****
  else
      mode=$3
  fi
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 132,142 ----
  else
      mode=$3
  fi
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 198,204 ****
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
--- 199,205 ----
          set $1 $2 ${3:-$MODE} `pwd`
          cd $1
          for file in * ; do
!             if [ -f $file -a ! -f $DESTDIR$2/$file ] ; then
                  CopyFileP $file $2/$file $3
              fi
          done
***************
*** 223,230 ****
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $1 ] ; then
!     dir=`echo $1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
--- 224,231 ----
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $DESTDIR$1 ] ; then
!     dir=`echo $DESTDIR$1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir ; do
          path_to_date="$path_to_date$path"
***************
*** 266,275 ****
      # Change the FIRST libpath to the new form.  This allows 
      # the LIB_PATH to contain multiple names, as long as the MPICH libpath
      # is first
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 267,277 ----
      # Change the FIRST libpath to the new form.  This allows 
      # the LIB_PATH to contain multiple names, as long as the MPICH libpath
      # is first
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 300,306 ****
  else
      mode=$3
  fi
! $Show chmod $mode $2
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
--- 302,308 ----
  else
      mode=$3
  fi
! $Show chmod $mode $dest
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
Index: mpid/ch_gm/CHANGES
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_gm/CHANGES,v
retrieving revision 1.3
retrieving revision 1.4
diff -c -r1.3 -r1.4
*** mpid/ch_gm/CHANGES	2002/09/30 09:21:45	1.3
--- mpid/ch_gm/CHANGES	2003/01/07 15:42:35	1.4
***************
*** 11,16 ****
--- 11,18 ----
  * Add a protection to prevent the usage of the shared memory device at the 
    same time than blocking or hybrid GM receive mode. Devices are not allowed 
    to block in a multi-devices configuration.
+ * Fix a bug in the configure script to effectively disable memory registration
+   to use MPICH-GM on Solaris.
  * Minor typo corrections.
  
  
Index: mpid/ch_gm/gmpi.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_gm/gmpi.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -c -r1.5 -r1.6
*** mpid/ch_gm/gmpi.h	2003/01/03 07:20:55	1.5
--- mpid/ch_gm/gmpi.h	2003/01/07 15:42:35	1.6
***************
*** 7,12 ****
--- 7,14 ----
  #ifndef _gmpi_h
  #define _gmpi_h
  
+ #include <assert.h>
+ 
  #include "mpichconf.h"
  #include "mpich-mpid.h"
  
***************
*** 162,172 ****
  #define GMPI_DRAIN_GM_INCOMING
  
  #if GMPI_DEBUG_ASSERT
! #if defined(gm_always_assert)
! #define gmpi_debug_assert gm_always_assert
! #else
! #define gmpi_debug_assert gm_assert
! #endif
  #else
  #define gmpi_debug_assert(a) 
  #endif
--- 164,170 ----
  #define GMPI_DRAIN_GM_INCOMING
  
  #if GMPI_DEBUG_ASSERT
! #define gmpi_debug_assert assert
  #else
  #define gmpi_debug_assert(a) 
  #endif
Index: mpid/ch_gm/gmpi_noreg.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_gm/gmpi_noreg.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** mpid/ch_gm/gmpi_noreg.c	2002/07/29 06:43:32	1.2
--- mpid/ch_gm/gmpi_noreg.c	2003/01/07 15:42:36	1.3
***************
*** 25,30 ****
--- 25,31 ----
        
        for (i=0; i<GMPI_BOUNCE_BUFFERS; i++)
  	{
+ 	  bounce_buffers[i].status = GMPI_BOUNCE_SEGMENT_FREE
  	  bounce_buffers[i].next = previous_buffer;
  	  bounce_buffers[i].addr = 
  	    (unsigned long) gmpi_dma_alloc(GMPI_MAX_PUT_LENGTH);
Index: mpid/ch_nt/nt_common/MessageQueue.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_nt/nt_common/MessageQueue.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** mpid/ch_nt/nt_common/MessageQueue.cpp	2001/12/04 21:23:33	1.2
--- mpid/ch_nt/nt_common/MessageQueue.cpp	2003/01/08 20:36:36	1.3
***************
*** 252,258 ****
  		find_buffer = pNode->link.posted->list.buffer;
  		if (find_length > pNode->link.posted->list.length)
  		{
! 		    printf("find_length: %d, pNode->link.posted->list.length: %d\n", find_length, pNode->link.posted->list.length);
  		    pNode->link.posted->list.length = -1;
  		}
  		else
--- 252,258 ----
  		find_buffer = pNode->link.posted->list.buffer;
  		if (find_length > pNode->link.posted->list.length)
  		{
! 		    printf("MessageQueue:FindNode:Error - find_length: %d, pNode->link.posted->list.length: %d\n", find_length, pNode->link.posted->list.length);fflush(stdout);
  		    pNode->link.posted->list.length = -1;
  		}
  		else
***************
*** 455,461 ****
  	{
  		if (ret_length == -1)
  		{
! 			printf("length == -1\n");
  			return false;
  		}
  		bDeleteNeeded = false;
--- 455,461 ----
  	{
  		if (ret_length == -1)
  		{
! 			printf("MessageQueue:FillThisBuffer:Error - length == -1\n");
  			return false;
  		}
  		bDeleteNeeded = false;
***************
*** 512,518 ****
  	pID[3] = -1;
  	if (pID[2] == -1)
  	{
! 		printf("PostBufferForFilling:Buffer too short - %d < %d", length, find_length);
  		fflush(stdout);
  	}
  
--- 512,518 ----
  	pID[3] = -1;
  	if (pID[2] == -1)
  	{
! 		printf("MessageQueue:PostBufferForFilling:Buffer too short - %d < %d", length, find_length);
  		fflush(stdout);
  	}
  
Index: mpid/ch_nt/nt_common/ShmemLockedQueue.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_nt/nt_common/ShmemLockedQueue.cpp,v
retrieving revision 1.2
retrieving revision 1.4
diff -c -r1.2 -r1.4
*** mpid/ch_nt/nt_common/ShmemLockedQueue.cpp	2002/12/12 03:59:00	1.2
--- mpid/ch_nt/nt_common/ShmemLockedQueue.cpp	2003/01/09 17:11:01	1.4
***************
*** 2,7 ****
--- 2,9 ----
  #include <stdio.h>
  #include "lock.h"
  
+ #define SHM_Q_INITIALIZED 0x12345678
+ 
  // Function name	: ShmemLockedQueue::ShmemLockedQueue
  // Description	    : 
  // Return type		: 
***************
*** 34,40 ****
  	if (m_hMapping != NULL)
  	{
  		if (m_pBottom != NULL)
! 			UnmapViewOfFile(m_pBottom);
  		CloseHandle(m_hMapping);
  	}
  	if (m_hMsgAvailableEvent != NULL)
--- 36,43 ----
  	if (m_hMapping != NULL)
  	{
  		if (m_pBottom != NULL)
! 			//UnmapViewOfFile(m_pBottom);
! 			UnmapViewOfFile((void*)(((LONG*)m_pBottom) - 1)); // back up over the initialized field to the true beginning
  		CloseHandle(m_hMapping);
  	}
  	if (m_hMsgAvailableEvent != NULL)
***************
*** 50,59 ****
  bool ShmemLockedQueue::Init(char *name, unsigned long size)
  {
  	bool bFirst = true;
  
  	m_dwMaxMsgSize = size;
  
! 	size = size + sizeof(ShmemLockedQueueHeader) + 5*sizeof(LONG);
  
  	// Create a mapping from the page file
  	m_hMapping = CreateFileMapping(
--- 53,64 ----
  bool ShmemLockedQueue::Init(char *name, unsigned long size)
  {
  	bool bFirst = true;
+ 	HANDLE hInitEvent = NULL;
+ 	LONG *pInitialized;
  
  	m_dwMaxMsgSize = size;
  
! 	size = size + sizeof(ShmemLockedQueueHeader) + 6*sizeof(LONG);
  
  	// Create a mapping from the page file
  	m_hMapping = CreateFileMapping(
***************
*** 85,97 ****
  		return false;
  	}
  
  	m_plQMutex = (LONG*)m_pBottom;
  	m_plQEmptyTrigger = &((LONG*)m_pBottom)[1];
  	m_plMsgAvailableTrigger = &((LONG*)m_pBottom)[2];
  
! 	m_pEnd = (LPBYTE)m_pBottom + size;
  	m_pBase = (LPBYTE)m_pBottom + 3*sizeof(LONG);
! 	m_dwSize = size;
  
  	// If this process is creating the mapping, 
  	// then set up the head and tail pointers
--- 90,109 ----
  		return false;
  	}
  
+ 	/* NEW Jan 9, 2003
+ 	 Added an initialized field before the m_pBottom pointer
+ 	 This means that m_pBottom must be moved back in the finalize function before it can be released
+ 	 */
+ 	pInitialized = (LONG*)m_pBottom;
+ 	m_pBottom = (void*)(((LONG*)m_pBottom) + 1);
+ 
  	m_plQMutex = (LONG*)m_pBottom;
  	m_plQEmptyTrigger = &((LONG*)m_pBottom)[1];
  	m_plMsgAvailableTrigger = &((LONG*)m_pBottom)[2];
  
! 	m_pEnd = (LPBYTE)m_pBottom + size - sizeof(LONG);
  	m_pBase = (LPBYTE)m_pBottom + 3*sizeof(LONG);
! 	m_dwSize = size - sizeof(LONG);
  
  	// If this process is creating the mapping, 
  	// then set up the head and tail pointers
***************
*** 120,125 ****
--- 132,155 ----
  		return false;
  	}
  
+ 	if (bFirst)
+ 	{
+ 	    // mark the queue as initialized
+ 	    *pInitialized = SHM_Q_INITIALIZED;
+ 	}
+ 	else
+ 	{
+ 	    // wait until the queue is initialized
+ 	    int retry = 100;
+ 	    while (*pInitialized != SHM_Q_INITIALIZED && retry)
+ 	    {
+ 		Sleep(200);
+ 		retry--;
+ 	    }
+ 	    if (*pInitialized != SHM_Q_INITIALIZED)
+ 		return false;
+ 	}
+ 
  	return true;
  }
  
***************
*** 333,339 ****
  				if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  						!= WAIT_OBJECT_0)
  				{
! 					printf("Wait for MsgAvailableEvent failed\n");
  					return false;
  				}
  			}
--- 363,369 ----
  				if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  						!= WAIT_OBJECT_0)
  				{
! 					printf("ShmemLockedQueue:RemoveNext:Wait for MsgAvailableEvent on an empty queue failed, error %d\n", GetLastError());fflush(stdout);
  					return false;
  				}
  			}
***************
*** 365,371 ****
  			if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  					!= WAIT_OBJECT_0)
  			{
! 				printf("Wait for MsgAvailableEvent failed\n");
  				return false;
  			}
  		}
--- 395,401 ----
  			if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  					!= WAIT_OBJECT_0)
  			{
! 				printf("ShmemLockedQueue:RemoveNext:Wait for MsgAvailableEvent failed, error %d\n", GetLastError());fflush(stdout);
  				return false;
  			}
  		}
***************
*** 380,386 ****
  	// Check that the buffer provided is large enough to hold the data
  	if (pMessage->length > *length)
  	{
! 		printf("length %d > *length %d\n", pMessage->length, *length);
  		unlock(m_plQMutex);
  		return false;
  	}
--- 410,416 ----
  	// Check that the buffer provided is large enough to hold the data
  	if (pMessage->length > *length)
  	{
! 		printf("ShmemLockedQueue:RemoveNext:shmem message length %d > %d user buffer length\n", pMessage->length, *length);
  		unlock(m_plQMutex);
  		return false;
  	}
***************
*** 453,459 ****
  					if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  						!= WAIT_OBJECT_0)
  					{
! 						printf("Wait for MsgAvailableEvent failed\n");
  						return false;
  					}
  				}
--- 483,489 ----
  					if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  						!= WAIT_OBJECT_0)
  					{
! 						printf("ShmemLockedQueue:RemoveNextInsert:Wait for MsgAvailableEvent on an empty queue failed, error %d\n", GetLastError());fflush(stdout);
  						return false;
  					}
  				}
***************
*** 485,491 ****
  				if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  					!= WAIT_OBJECT_0)
  				{
! 					printf("Wait for MsgAvailableEvent failed\n");
  					return false;
  				}
  			}
--- 515,521 ----
  				if (WaitForSingleObject(m_hMsgAvailableEvent, INFINITE) 
  					!= WAIT_OBJECT_0)
  				{
! 					printf("ShmemLockedQueue:RemoveNextInsert:Wait for MsgAvailableEvent failed, error %d\n", GetLastError());fflush(stdout);
  					return false;
  				}
  			}
Index: mpid/ch_nt/nt_common/nt_tcp_recv_blocking.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_nt/nt_common/nt_tcp_recv_blocking.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** mpid/ch_nt/nt_common/nt_tcp_recv_blocking.cpp	2001/12/03 23:17:36	1.1
--- mpid/ch_nt/nt_common/nt_tcp_recv_blocking.cpp	2003/01/08 20:08:42	1.2
***************
*** 42,49 ****
  		if (ret_val != WSA_WAIT_EVENT_0)
  			return ret_val;
  
! 		if (WSAEnumNetworkEvents(sock, event, &nevents) == SOCKET_ERROR)
! 			return WSAGetLastError();
  
  		if (nevents.lNetworkEvents & FD_READ)
  		{
--- 42,55 ----
  		if (ret_val != WSA_WAIT_EVENT_0)
  			return ret_val;
  
! 		while (true)
! 		{
! 		    if (WSAEnumNetworkEvents(sock, event, &nevents) == 0)
! 			break;
! 		    error = WSAGetLastError();
! 		    if (error != WSAEWOULDBLOCK)
! 			return error;
! 		}
  
  		if (nevents.lNetworkEvents & FD_READ)
  		{
***************
*** 110,117 ****
  		if (ret_val != WSA_WAIT_EVENT_0)
  			return ret_val;
  
! 		if (WSAEnumNetworkEvents(sock, event, &nevents) == SOCKET_ERROR)
! 			return WSAGetLastError();
  
  		if (nevents.lNetworkEvents & FD_READ)
  		{
--- 116,129 ----
  		if (ret_val != WSA_WAIT_EVENT_0)
  			return ret_val;
  
! 		while (true)
! 		{
! 		    if (WSAEnumNetworkEvents(sock, event, &nevents) == 0)
! 			break;
! 		    error = WSAGetLastError();
! 		    if (error != WSAEWOULDBLOCK)
! 			return error;
! 		}
  
  		if (nevents.lNetworkEvents & FD_READ)
  		{
Index: mpid/ch_nt/nt_ipvishm/nt_ipvishm_priv.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_nt/nt_ipvishm/nt_ipvishm_priv.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -c -r1.15 -r1.16
*** mpid/ch_nt/nt_ipvishm/nt_ipvishm_priv.cpp	2002/12/12 03:59:14	1.15
--- mpid/ch_nt/nt_ipvishm/nt_ipvishm_priv.cpp	2003/01/08 20:36:37	1.16
***************
*** 290,308 ****
  	sprintf(pszStr, "dbput name=%s key=port value=%d", dbname, port);
  	if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	{
! 		printf("ERROR: Unable to write '%s' to socket[%d]\n", pszStr, sock);
  		easy_closesocket(sock);
  		return false;
  	}
  	if (!ReadStringTimeout(sock, pszStr, MPICH_MPD_TIMEOUT))
  	{
! 		printf("ERROR: put failed: error %d", WSAGetLastError());
  		easy_closesocket(sock);
  		return false;
  	}
  	if (strnicmp(pszStr, "DBS_SUCCESS", 11) != 0)
  	{
! 	    printf("ERROR: putting the root port in the mpd database failed.\n%s", pszStr);
  	    WriteString(sock, "done");
  	    easy_closesocket(sock);
  	    return false;
--- 290,308 ----
  	sprintf(pszStr, "dbput name=%s key=port value=%d", dbname, port);
  	if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	{
! 		printf("ERROR:PutRootPortInMPDDatabase: Unable to write '%s' to socket[%d]\n", pszStr, sock);
  		easy_closesocket(sock);
  		return false;
  	}
  	if (!ReadStringTimeout(sock, pszStr, MPICH_MPD_TIMEOUT))
  	{
! 		printf("ERROR:PutRootPortInMPDDatabase: put failed: error %d", WSAGetLastError());
  		easy_closesocket(sock);
  		return false;
  	}
  	if (strnicmp(pszStr, "DBS_SUCCESS", 11) != 0)
  	{
! 	    printf("ERROR:PutRootPortInMPDDatabase: putting the root port in the mpd database failed.\n%s", pszStr);
  	    WriteString(sock, "done");
  	    easy_closesocket(sock);
  	    return false;
***************
*** 311,317 ****
  	sprintf(pszStr, "barrier name=%s count=2", barrier_name);
  	if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	{
! 		printf("ERROR: Unable to write the barrier command: error %d", WSAGetLastError());
  		easy_closesocket(sock);
  		return false;
  	}
--- 311,317 ----
  	sprintf(pszStr, "barrier name=%s count=2", barrier_name);
  	if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	{
! 		printf("ERROR:PutRootPortInMPDDatabase: Unable to write the barrier command: error %d", WSAGetLastError());
  		easy_closesocket(sock);
  		return false;
  	}
***************
*** 320,326 ****
  	{
  	    if (!ReadStringTimeout(sock, pszStr, MPICH_MPD_TIMEOUT))
  	    {
! 		printf("ERROR: Unable to read the result of the barrier command: error %d", WSAGetLastError());
  		easy_closesocket(sock);
  		return false;
  	    }
--- 320,326 ----
  	{
  	    if (!ReadStringTimeout(sock, pszStr, MPICH_MPD_TIMEOUT))
  	    {
! 		printf("ERROR:PutRootPortInMPDDatabase: Unable to read the result of the barrier command: error %d", WSAGetLastError());
  		easy_closesocket(sock);
  		return false;
  	    }
***************
*** 330,336 ****
  		if (strncmp(pszStr, "INFO", 4))
  		{
  		    // If it is not an 'INFO - ...' message then it is an error
! 		    printf("ERROR: barrier failed:\n%s", pszStr);
  		    easy_closesocket(sock);
  		    return false;
  		}
--- 330,336 ----
  		if (strncmp(pszStr, "INFO", 4))
  		{
  		    // If it is not an 'INFO - ...' message then it is an error
! 		    printf("ERROR:PutRootPortInMPDDatabase: barrier failed:\n%s", pszStr);
  		    easy_closesocket(sock);
  		    return false;
  		}
***************
*** 389,409 ****
      sprintf(pszStr, "setMPIFinalized %s", g_pszMPDId);
      if (WriteString(sock, pszStr) == SOCKET_ERROR)
      {
! 	printf("ERROR: Unable to write '%s' to socket[%d]\n", pszStr, sock);
  	fflush(stdout);
  	easy_closesocket(sock);
  	return false;
      }
      if (!ReadStringTimeout(sock, pszStr, MPICH_MPD_TIMEOUT))
      {
! 	printf("ERROR: Unable to read the result of the setMPIFinalized command\n");
  	fflush(stdout);
  	easy_closesocket(sock);
  	return false;
      }
      if (stricmp(pszStr, "SUCCESS") != 0)
      {
! 	printf("ERROR: setMPIFinalized failed.\n");
  	fflush(stdout);
  	WriteString(sock, "done");
  	easy_closesocket(sock);
--- 389,409 ----
      sprintf(pszStr, "setMPIFinalized %s", g_pszMPDId);
      if (WriteString(sock, pszStr) == SOCKET_ERROR)
      {
! 	printf("ERROR:UpdateMPIFinalized: Unable to write '%s' to socket[%d]\n", pszStr, sock);
  	fflush(stdout);
  	easy_closesocket(sock);
  	return false;
      }
      if (!ReadStringTimeout(sock, pszStr, MPICH_MPD_TIMEOUT))
      {
! 	printf("ERROR:UpdateMPIFinalized: Unable to read the result of the setMPIFinalized command\n");
  	fflush(stdout);
  	easy_closesocket(sock);
  	return false;
      }
      if (stricmp(pszStr, "SUCCESS") != 0)
      {
! 	printf("ERROR:UpdateMPIFinalized: setMPIFinalized failed.\n");
  	fflush(stdout);
  	WriteString(sock, "done");
  	easy_closesocket(sock);
Index: mpid/ch_p4/mpirun.ch_p4.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_p4/mpirun.ch_p4.in,v
retrieving revision 1.19
retrieving revision 1.20
diff -c -r1.19 -r1.20
*** mpid/ch_p4/mpirun.ch_p4.in	2003/01/03 22:35:28	1.19
--- mpid/ch_p4/mpirun.ch_p4.in	2003/01/13 18:50:31	1.20
***************
*** 201,206 ****
--- 201,209 ----
  #
  if [ "$debugger" != "" ] ; then
      if [ -x "$MPIRUN_HOME/mpirun_dbg.$debugger" ] ; then
+         export nolocal
+ 	export machinehead
+ 	export stdinfile
          $MPIRUN_HOME/mpirun_dbg.$debugger -progname $prognamemain -p4pg $p4pgfile_master -p4wd $p4workdir -cmdlineargs "$cmdLineArgs"
      else
          echo "Cannot run debugger - no debugger script." 
Index: mpid/ch_p4/p4/lib/p4_sock_cr.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_p4/p4/lib/p4_sock_cr.c,v
retrieving revision 1.25
retrieving revision 1.27
diff -c -r1.25 -r1.27
*** mpid/ch_p4/p4/lib/p4_sock_cr.c	2002/12/04 23:30:57	1.25
--- mpid/ch_p4/p4/lib/p4_sock_cr.c	2003/01/13 17:23:33	1.27
***************
*** 386,392 ****
  		p4_dprintfl(20, "bproc: (pid=%d) child pid is %d\n",getpid(),child_pid);
  	    }
  
! #else /* !BEOWULF */
  #if defined(HAS_RSHCOMMAND)
  	    strncpy( remote_shell, RSHCOMMAND, P4_MAX_PGM_LEN );
  	    /* Allow the environment variable "P4RSHCOMMAND" to 
--- 386,392 ----
  		p4_dprintfl(20, "bproc: (pid=%d) child pid is %d\n",getpid(),child_pid);
  	    }
  
! #else /* !SCYLD_BEOWULF */
  #if defined(HAS_RSHCOMMAND)
  	    strncpy( remote_shell, RSHCOMMAND, P4_MAX_PGM_LEN );
  	    /* Allow the environment variable "P4RSHCOMMAND" to 
***************
*** 518,523 ****
--- 518,606 ----
  		    /* ENOEXEC - unrecognized executable,
  		       ENOENT  - file no found */
  #else
+ 
+ 		{ /* Code to pass environment variables for MPICH-G2 (RL) */
+ 		    char *p;
+ 		    p = getenv( "P4_SETS_ALL_ENVVARS" ); 
+ 		    if ( p ) {
+ 			/* This code prepends "setenv FOO BAR;setenv FAZZ BAZZ; ..." to
+ 			   the program name to be rsh'd */
+ 			/* This code needs more stringent attention to string lengths */
+                         /*                      ^^^^^^                                */
+ 			extern char **environ;
+ 			int i, pgm_prefix_len;
+ #                       define MAX_PGM_PREFIX_LEN 1024
+ 			char pgm_prefix[MAX_PGM_PREFIX_LEN], *c;
+ 			char envvar_buf[256], setenv_buf[256], varname[256], varvalue[1024];
+ 
+ 			p4_dprintfl( 10, "P4_SETS_ALL_ENVVARS is set\n"); 
+ 			pgm_prefix_len = 0;
+ 			for (i = 0; environ[i] != NULL; i++ ) { 
+ 			    p4_dprintfl( 90, "environ[%d]: %s\n", i, environ[i] );
+ 			    pgm_prefix_len += strlen(environ[i]);
+ 			}
+ 			/* prefix will need accumulated length plus room for i
+ 			   copies of "setenv ;" where i is the number of env vars */
+ 			pgm_prefix_len += i * strlen("setenv ;");
+ 			p4_dprintfl( 90, "prefix needs %d characters\n", pgm_prefix_len);
+ 			/* 256 seems to be limit of string passed to rsh through execlp */
+ /*
+ 			if ( pgm_prefix_len > 256 - strlen(pgm) )
+ 			    p4_error( "environment-setting prefix would be too long: ",
+ 				      pgm_prefix_len);
+ */
+ 			pgm_prefix[0] = '\0';
+ 			for (i = 0; environ[i] != NULL; i++ ) { 
+ 			    /* separate name from value; add setenv cmd */
+ 			    strcpy(envvar_buf, environ[i] );
+ 			    c = strtok( envvar_buf, "=" ); /* get varname */
+ 			    strcpy( varname, c );
+ 			    /* here is where to exclude some env vars */
+ 			    if ( strcmp( varname, "P4_SETS_ALL_ENVVARS" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "FOO" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "PWD" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "MACHTYPE" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "SHLVL" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "SHELL" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "OSTYPE" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "HOSTTYPE" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "TERM" ) == 0 )
+ 				continue;
+ 			    if ( strcmp( varname, "PATH" ) == 0 )
+ 				continue;
+ 			    c = strtok( NULL, "\n" ); /* get varvalue */
+ 			    if ( c )
+ 				strcpy( varvalue, c );
+ 			    else
+ 				varvalue[0] = '\0';
+ 			    sprintf( setenv_buf, "setenv %s %s;", varname, varvalue);
+ 			    p4_dprintfl( 90, "setenv_buf = :%s:\n", setenv_buf );
+ 			    strcat( pgm_prefix, setenv_buf );
+ 			}
+ 			p4_dprintfl( 90, "prefix=:%s:\n", pgm_prefix );
+ 			/* now prepend to pgm if not too long */
+ 			if (strlen(pgm_prefix) + strlen(pgm) >= P4_MAX_PGM_LEN )
+ 			    p4_error("prefix too long", 0 );
+ 			else {
+ 			    strcat(pgm_prefix, pgm);
+ 			    strcpy(pgm, pgm_prefix);
+ 			}
+ 		    }
+ 		    /*
+ 		    p4_dprintf( "pgm argument to remote shell = :%s:\n", pgm );
+ 		    p4_dprintf( "length of pgm argument to remote shell = %d\n",
+ 				strlen(pgm) );
+ 		    */
+ 		}
+ 
  		rc = execlp(remote_shell, remote_shell,
  			    host, 
  #if !defined(RSH_HAS_NO_L)
Index: mpid/ch_p4/p4/lib/p4_utils.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_p4/p4/lib/p4_utils.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -c -r1.41 -r1.42
*** mpid/ch_p4/p4/lib/p4_utils.c	2002/10/10 14:49:46	1.41
--- mpid/ch_p4/p4/lib/p4_utils.c	2003/01/13 17:24:45	1.42
***************
*** 1194,1199 ****
--- 1194,1206 ----
  	    /* Construct a die message for remote listener */
  	    if (strcmp(prev_hostname,dest_pi->host_name) != 0 || prev_port != dest_pi->port)
  	    {
+ 		/* The listener closes the connection after receiving a 
+ 		   message, so we need to get a new connection in order to
+ 		   send it another message.  Thanks to Vincent Newsum 
+ 		   <Newsum@fel.tno.nl> for this fix */
+ 		dest_listener_con_fd = net_conn_to_listener(dest_host,dest_listener,2);
+ 		if (dest_listener_con_fd == -1)
+ 		    continue;
  		msg.type = p4_i_to_n(DIE);
  		msg.from = p4_i_to_n(my_id);
  		p4_dprintfl(40, "zap_remote_p4_processes: sending DIE to %d on fd=%d size=%d\n",
Index: mpid/ch_p4mpd/install_ch_p4mpd
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_p4mpd/install_ch_p4mpd,v
retrieving revision 1.7
retrieving revision 1.8
diff -c -r1.7 -r1.8
*** mpid/ch_p4mpd/install_ch_p4mpd	2002/01/22 20:58:54	1.7
--- mpid/ch_p4mpd/install_ch_p4mpd	2003/01/13 17:26:02	1.8
***************
*** 10,18 ****
  fi
  if [ -f mpid/mpd/Makefile ] ; then
      export XMODE
!     (cd mpid/mpd ; $MAKE install UNINSTALLFILE=$UNINSTALLFILE )
!     rm -f ${bindir}/mpichboot
!     cat >${bindir}/mpichboot <<EOF
  #! /bin/sh
  if [ ! -s $HOME/.mpdpasswd -a ! -s $HOME/.mpd.conf ] ; then
      echo "In mpichboot:"
--- 10,18 ----
  fi
  if [ -f mpid/mpd/Makefile ] ; then
      export XMODE
!     (cd mpid/mpd ; $MAKE install UNINSTALLFILE=$UNINSTALLFILE DESTDIR=$DESTDIR )
!     rm -f $DESTDIR${bindir}/mpichboot
!     cat >$DESTDIR${bindir}/mpichboot <<EOF
  #! /bin/sh
  if [ ! -s $HOME/.mpdpasswd -a ! -s $HOME/.mpd.conf ] ; then
      echo "In mpichboot:"
***************
*** 24,37 ****
  # calling process.  
  ${bindir}/mpd -b &
  EOF
!     chmod $XMODE ${bindir}/mpichboot
      echo "rm -f ${bindir}/mpichboot" >>$UNINSTALLFILE
!     rm -f ${bindir}/mpichstop
!     cat >${bindir}/mpichstop <<EOF
  #! /bin/sh
  ${bindir}/mpdallexit
  EOF
!     chmod $XMODE ${bindir}/mpichstop
      echo "rm -f ${bindir}/mpichstop" >>$UNINSTALLFILE
  else
      echo "Could not find Makefile for mpid/mpd!"
--- 24,37 ----
  # calling process.  
  ${bindir}/mpd -b &
  EOF
!     chmod $XMODE $DESTDIR${bindir}/mpichboot
      echo "rm -f ${bindir}/mpichboot" >>$UNINSTALLFILE
!     rm -f $DESTDIR${bindir}/mpichstop
!     cat >$DESTDIR${bindir}/mpichstop <<EOF
  #! /bin/sh
  ${bindir}/mpdallexit
  EOF
!     chmod $XMODE $DESTDIR${bindir}/mpichstop
      echo "rm -f ${bindir}/mpichstop" >>$UNINSTALLFILE
  else
      echo "Could not find Makefile for mpid/mpd!"
Index: mpid/ch_shmem/shdef.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/ch_shmem/shdef.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -c -r1.5 -r1.6
*** mpid/ch_shmem/shdef.h	2001/06/22 14:41:09	1.5
--- mpid/ch_shmem/shdef.h	2003/01/09 20:28:23	1.6
***************
*** 31,45 ****
  #define MPID_MAX_SHMEM 16777216
  #else
  #ifdef PROCESSOR_COUNT
! #if PROCESSOR_COUNT > 32
  #define MPID_MAX_PROCS PROCESSOR_COUNT
  #define MPID_MAX_SHMEM 4194304*(PROCESSOR_COUNT/8)
  #else
! #define MPID_MAX_PROCS 32
  #define MPID_MAX_SHMEM 4194304
! #endif /* PROCESSOR_COUNT > 32 */
  #else
! #define MPID_MAX_PROCS 32
  #define MPID_MAX_SHMEM 4194304
  #endif /* PROCESSOR_COUNT */
  #endif /* MPI_cspp */
--- 31,45 ----
  #define MPID_MAX_SHMEM 16777216
  #else
  #ifdef PROCESSOR_COUNT
! #if PROCESSOR_COUNT > 256
  #define MPID_MAX_PROCS PROCESSOR_COUNT
  #define MPID_MAX_SHMEM 4194304*(PROCESSOR_COUNT/8)
  #else
! #define MPID_MAX_PROCS 256
  #define MPID_MAX_SHMEM 4194304
! #endif /* PROCESSOR_COUNT > 256 */
  #else
! #define MPID_MAX_PROCS 256
  #define MPID_MAX_SHMEM 4194304
  #endif /* PROCESSOR_COUNT */
  #endif /* MPI_cspp */
Index: mpid/globus2/comm.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/comm.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -c -r1.45 -r1.46
*** mpid/globus2/comm.h	2002/09/13 23:40:21	1.45
--- mpid/globus2/comm.h	2003/01/08 12:41:52	1.46
***************
*** 232,237 ****
--- 232,275 ----
     RETURNV(MPIR_ERROR(comm,MPI_ERR_ERRHANDLER_CORRUPT,routine_name));}}
  #endif
  
+ /*****************/
+ /* START GRIDFTP */
+ /*****************/
+ 
+ /* 
+  * these overwrite default macros found in mpid/ch2/mpid.h 
+  * any device that overwrites one must overwrite all three.
+  *
+  * vvvvvvvvvvvvv from mpid/ch2/mpid.h
+  * These macros define an interface between the device and the rest of the 
+  * MPI code for attributes.  If the device needs to use these, it *must*
+  * define all 3.
+  *
+  * MPID_ATTR_SET(struct MPIR_COMMUNICATOR *comm, int keyval, void *attr_value)
+  * is called when the user sets an attribute value for any keyval.
+  *
+  * MPID_ATTR_GET(struct MPIR_COMMUNICATOR *comm, int keyval, void *attr_value)
+  * is called when the user gets an attribute value The last argument is a 
+  * pointer to a value, not a pointer to a pointer (store into the storage
+  * defined by the user, don't change the pointer)
+  *
+  * MPID_KEYVAL_INIT()
+  * The device should also call MPI_Keyval_create() for any keyvals that 
+  * it wishes to be available for users.  Otherwise, the keyvals will have
+  * value MPI_KEYVAL_INVALID.
+  * ^^^^^^^^^^^^^ from mpid/ch2/mpid.h
+  */
+ 
+ #define MPID_ATTR_SET(a,b,c) MPID_Attr_set((a), (b), (c));
+ #define MPID_ATTR_GET(comm_ptr,keyval,attr_value_p) 
+ #define MPID_KEYVAL_INIT()                  \
+      MPI_Keyval_create(MPI_NULL_COPY_FN,    \
+ 			MPI_NULL_DELETE_FN, \
+ 			&MPICHX_PARALLELSOCKETS_PARAMETERS,    \
+ 			(void *) 0);
+ /***************/
+ /* END GRIDFTP */
+ /***************/
  
  /*
   * Function prototypes
Index: mpid/globus2/comm_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/comm_g.c,v
retrieving revision 1.25
retrieving revision 1.27
diff -c -r1.25 -r1.27
*** mpid/globus2/comm_g.c	2002/12/16 20:59:09	1.25
--- mpid/globus2/comm_g.c	2003/01/09 11:36:03	1.27
***************
*** 3,8 ****
--- 3,14 ----
  
  extern void *			VMPI_Internal_Comm;
  
+ /* START GRIDFTP */
+ extern int MPICHX_PARALLELSOCKETS_PARAMETERS; 
+ 
+ int enable_gridftp(struct MPIR_COMMUNICATOR *comm, void *attr_value); 
+ /* END GRIDFTP */
+ 
  #undef DEBUG_FN_NAME
  #define DEBUG_FN_NAME MPID_Comm_init
  int MPID_Comm_init(
***************
*** 150,156 ****
      for (i = 0; i < newcomm->np; i++)
      {
  	int				vlrank;
- 	int				vgrank;
  
  	vlrank = newcomm->lrank_to_vlrank[i];
  	if (vlrank >= 0)
--- 156,161 ----
***************
*** 340,348 ****
      newcomm->vgrank_to_vlrank = NULL;
  #endif   /* VMPI */
  
!   /* fn_exit: */
      if ( rc == MPI_SUCCESS  &&  newcomm )
          rc = topology_initialization(newcomm);
      DEBUG_FN_EXIT(DEBUG_MODULE_COMM);
      return rc;
  }
--- 345,357 ----
      newcomm->vgrank_to_vlrank = NULL;
  #endif   /* VMPI */
  
! #ifdef VMPI
!   fn_exit:
! #endif   /* VMPI */
      if ( rc == MPI_SUCCESS  &&  newcomm )
+     {
          rc = topology_initialization(newcomm);
+     } /* endif */
      DEBUG_FN_EXIT(DEBUG_MODULE_COMM);
      return rc;
  }
***************
*** 377,379 ****
--- 386,407 ----
      return MPI_SUCCESS;
  }
  
+ /* START GRIDFTP */
+ int MPID_Attr_set(struct MPIR_COMMUNICATOR *comm, int keyval, void *attr_value)
+ {
+     int rc;
+ 
+     if (keyval == MPICHX_PARALLELSOCKETS_PARAMETERS)
+     {
+         rc = enable_gridftp(comm, attr_value); 
+     }
+     else
+     {
+         /* I don't care about any other attr */
+         rc = MPI_SUCCESS; 
+     } /* endif */
+ 
+     return rc;
+ 
+ } /* end MPID_Attr_set() */
+ /* END GRIDFTP */
Index: mpid/globus2/datatype_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/datatype_g.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -c -r1.9 -r1.10
*** mpid/globus2/datatype_g.c	2002/11/06 21:21:24	1.9
--- mpid/globus2/datatype_g.c	2003/01/09 11:36:04	1.10
***************
*** 50,56 ****
  	dtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 50,56 ----
  	dtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
***************
*** 90,96 ****
  	    mp_type_commit(dtype_ptr->vmpi_type));
      }
  
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 90,96 ----
  	    mp_type_commit(dtype_ptr->vmpi_type));
      }
  
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
***************
*** 135,141 ****
  
      dtype_ptr->vmpi_cookie = 0;
      
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 135,141 ----
  
      dtype_ptr->vmpi_cookie = 0;
      
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
***************
*** 181,187 ****
  	newtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 181,187 ----
  	newtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
***************
*** 231,237 ****
  	newtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 231,237 ----
  	newtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
***************
*** 281,287 ****
  	newtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 281,287 ----
  	newtype_ptr->vmpi_cookie = MPID_DATATYPE_COOKIE;
      }
      
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
***************
*** 473,479 ****
           break;
       } /* end switch */
  
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
--- 473,479 ----
           break;
       } /* end switch */
  
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_TYPES);
Index: mpid/globus2/global_c_symb.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/global_c_symb.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -c -r1.8 -r1.9
*** mpid/globus2/global_c_symb.h	2002/09/21 18:25:48	1.8
--- mpid/globus2/global_c_symb.h	2003/01/09 13:24:59	1.9
***************
*** 1,18 ****
  /* This file was automatically generated by the script
!  * "rename_symb.sh".  Date: Sat Sep 21 13:08:13 CDT 2002
!  * username: lacour
!  * host: IRIX64 lemon 6.5 04131233 IP30
   * GLOBUS_VERSION="2"
!  * GLOBUS_LOCATION="/my/packages/globus/globus-2.0"
   * CONFIGURE_OPTIONS="--disable-f90 --disable-f90modules --without-mpe --disable-cxx"
!  * DEVICE_OPTION="--with-device=globus2:-flavor=vendorcc32mpi"
!  * EXTRA_CONFIG_OPT="--with-arch=IRIXN32"
!  * ROOT_DIR="/sandbox/lacour/tmp/mpich"
   * LIBS="lib/libmpichg2.a lib/libpmpichg2.a"
   * OUTPUT="mpid/globus2/global_c_symb.h"
!  * Number of global symbols in new macro def file: 1114
!  * FORMER_OUTPUT="mpid/globus2/global_c_symb.h.old.Sat_Sep_21_13:08:13_CDT_2002"
!  * Number of global symbols in former macro def file: 1111
   * PREFIX="_mpich_g2_" */
  
  #ifndef GLOBAL_SYMB_RENAMING
--- 1,18 ----
  /* This file was automatically generated by the script
!  * "rename_symb.sh".  Date: Thu Jan  9 07:14:12 CST 2003
!  * username: karonis
!  * host: Linux wiggum.mcs.anl.gov 2.4.18-w1 #1 SMP Thu May 23 15:08:41 CDT 2002 i686 unknown
   * GLOBUS_VERSION="2"
!  * GLOBUS_LOCATION="/disks/space0/karonis/GlobusBundleMPI/INSTALL"
   * CONFIGURE_OPTIONS="--disable-f90 --disable-f90modules --without-mpe --disable-cxx"
!  * DEVICE_OPTION="--with-device=globus2:-flavor=mpicc32dbg"
!  * EXTRA_CONFIG_OPT=""
!  * ROOT_DIR="/disks/space0/karonis/mpich-checkout-generate-global_c_symb.h/mpich"
   * LIBS="lib/libmpichg2.a lib/libpmpichg2.a"
   * OUTPUT="mpid/globus2/global_c_symb.h"
!  * Number of global symbols in new macro def file: 1120
!  * FORMER_OUTPUT="mpid/globus2/global_c_symb.h.old.Thu_Jan_9_07:14:12_CST_2003"
!  * Number of global symbols in former macro def file: 1114
   * PREFIX="_mpich_g2_" */
  
  #ifndef GLOBAL_SYMB_RENAMING
***************
*** 337,348 ****
--- 337,350 ----
  #define Handle _mpich_g2_Handle
  #define Headerlen _mpich_g2_Headerlen
  #define LastTimeILookedAtMyWatch _mpich_g2_LastTimeILookedAtMyWatch
+ #define MPICHX_PARALLELSOCKETS_PARAMETERS _mpich_g2_MPICHX_PARALLELSOCKETS_PARAMETERS
  #define MPICHX_QOS_BANDWIDTH _mpich_g2_MPICHX_QOS_BANDWIDTH
  #define MPICHX_QOS_PARAMETERS _mpich_g2_MPICHX_QOS_PARAMETERS
  #define MPICHX_TOPOLOGY_COLORS _mpich_g2_MPICHX_TOPOLOGY_COLORS
  #define MPICHX_TOPOLOGY_DEPTHS _mpich_g2_MPICHX_TOPOLOGY_DEPTHS
  #define MPID_Abort _mpich_g2_MPID_Abort
  #define MPID_ArgSqueeze _mpich_g2_MPID_ArgSqueeze
+ #define MPID_Attr_set _mpich_g2_MPID_Attr_set
  #define MPID_CH_Wtick _mpich_g2_MPID_CH_Wtick
  #define MPID_Cancel_print_pkt _mpich_g2_MPID_Cancel_print_pkt
  #define MPID_Comm_free _mpich_g2_MPID_Comm_free
***************
*** 876,881 ****
--- 878,884 ----
  #define MPI_Wtime _mpich_g2_MPI_Wtime
  #define MessageQueuesLock _mpich_g2_MessageQueuesLock
  #define MpiPostedQueue _mpich_g2_MpiPostedQueue
+ #define MpichG2Space _mpich_g2_MpichG2Space
  #define MpichGlobus2TcpBufsz _mpich_g2_MpichGlobus2TcpBufsz
  #define NextMsgIdCtr _mpich_g2_NextMsgIdCtr
  #define PMPIO_Request_c2f _mpich_g2_PMPIO_Request_c2f
***************
*** 1104,1112 ****
--- 1107,1118 ----
  #define commworld_name_to_rowidx _mpich_g2_commworld_name_to_rowidx
  #define create_topology_access_keys _mpich_g2_create_topology_access_keys
  #define destroy_topology_access_keys _mpich_g2_destroy_topology_access_keys
+ #define enable_gridftp _mpich_g2_enable_gridftp
  #define enqueue_tcp_send _mpich_g2_enqueue_tcp_send
  #define extract_complete_from_buff _mpich_g2_extract_complete_from_buff
  #define extract_data_into_req _mpich_g2_extract_data_into_req
+ #define g_ftp_monitor_init _mpich_g2_g_ftp_monitor_init
+ #define g_ftp_monitor_reset _mpich_g2_g_ftp_monitor_reset
  #define g_malloc_chk_internal _mpich_g2_g_malloc_chk_internal
  #define get_channel _mpich_g2_get_channel
  #define get_channel_rowidx _mpich_g2_get_channel_rowidx
Index: mpid/globus2/init_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/init_g.c,v
retrieving revision 1.71
retrieving revision 1.73
diff -c -r1.71 -r1.73
*** mpid/globus2/init_g.c	2002/12/16 20:59:09	1.71
--- mpid/globus2/init_g.c	2003/01/09 11:36:05	1.73
***************
*** 10,15 ****
--- 10,17 ----
  /* allow the user to access the underlying topology */
  #include "topology_access.h"
  
+ extern int MPICHX_PARALLELSOCKETS_PARAMETERS; /* GRIDFTP */
+ 
  #include <globus_duroc_runtime.h>
  #include <globus_duroc_bootstrap.h>
  #include <globus_gram_myjob.h>
***************
*** 314,319 ****
--- 316,325 ----
  #endif
  
      destroy_topology_access_keys();
+     /* START GRIDFTP */
+     if ( MPICHX_PARALLELSOCKETS_PARAMETERS != MPI_KEYVAL_INVALID )
+         MPI_Keyval_free(&MPICHX_PARALLELSOCKETS_PARAMETERS);
+     /* END GRIDFTP */
  
  #   if defined(VMPI)
      {
***************
*** 328,334 ****
  			  MPID_MyWorldRank));
  	} /* endif */
  
! 	while (mp = MpiPostedQueue.head)
  	{
  	    MpiPostedQueue.head = mp->next;
  	    g_free(mp);
--- 334,340 ----
  			  MPID_MyWorldRank));
  	} /* endif */
  
! 	while ((mp = MpiPostedQueue.head) != NULL)
  	{
  	    MpiPostedQueue.head = mp->next;
  	    g_free(mp);
***************
*** 393,398 ****
--- 399,405 ----
      
      globus_module_deactivate(GLOBUS_NEXUS_MODULE);
      globus_module_deactivate(GLOBUS_IO_MODULE);
+     globus_module_deactivate(GLOBUS_FTP_CONTROL_MODULE); /* GRIDFTP */
      globus_module_deactivate(GLOBUS_COMMON_MODULE);
  
      /*
***************
*** 653,658 ****
--- 660,667 ----
  		    tp->cancel_head = tp->cancel_tail = 
  			tp->send_head = tp->send_tail = 
  			    (struct tcpsendreq *) NULL;
+                     tp->recvd_partner_port = GLOBUS_FALSE; /* GRIDFTP */
+                     tp->use_grid_ftp       = GLOBUS_FALSE; /* GRIDFTP */
  		    g_malloc(tp->header, globus_byte_t *, Headerlen);
                      sscanf(cp, "%s %d %d", tp->hostname, &dummy,
                                             &lan_id_lng);
***************
*** 977,982 ****
--- 986,1002 ----
  	abort();
      } /* endif */
  
+     /* START GRIDFTP */
+     rc = globus_module_activate(GLOBUS_FTP_CONTROL_MODULE);
+     if (rc != GLOBUS_SUCCESS)
+     {
+         globus_libc_fprintf(stderr, 
+             "globus_init: failed "
+             "globus_module_activate(GLOBUS_FTP_CONTROL_MODULE)\n");
+         abort();
+     } /* endif */
+     /* END GRIDFTP */
+ 
      /* 
       * we have to activate the nexus and disable fault tolerance
       * because duroc bootstrap uses nexus AND insists on keeping
***************
*** 1876,1883 ****
      
  	for (i = 0; i < MPID_MyWorldSize; i++)
  	{
- 	    struct mpi_miproto_t *		mpi_miproto;
- 
  	    miproto = CommworldChannels[i].selected_proto;
  
  	    if (i == MPID_MyWorldRank)
--- 1896,1901 ----
***************
*** 1909,1916 ****
      
  	for (i = 0; i < MPID_MyWorldSize; i++)
  	{
- 	    struct mpi_miproto_t *		mpi_miproto;
- 
  	    miproto = CommworldChannels[i].selected_proto;
  
  	    if (VMPI_GRank_to_VGRank[i] >= 0)
--- 1927,1932 ----
Index: mpid/globus2/mpid_defs.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/mpid_defs.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -c -r1.7 -r1.8
*** mpid/globus2/mpid_defs.h	2002/09/08 19:18:14	1.7
--- mpid/globus2/mpid_defs.h	2003/01/09 13:28:03	1.8
***************
*** 19,904 ****
  #define MPICH_RENAMING_MPI_FUNCS
  #define MPICH_SR_PACKED_INTRINSIC_UNSUPPORTED
  
- /* the following symbols have already been renamed in "global_c_symb.h".
-  * Avoid a million warnings commenting out all the rest. */
- 
- /* the following is commented out because these symbols are already
-  * renamed in "global_c_symb.h". */
- 
- #if 0
- 
- #define MPI_Abort MPQ_Abort
- #define PMPI_Abort PMPQ_Abort
- 
- #define MPI_Add_error_class MPQ_Add_error_class
- #define PMPI_Add_error_class PMPQ_Add_error_class
- 
- #define MPI_Address MPQ_Address
- #define PMPI_Address PMPQ_Address
- 
- #define MPI_Allgather MPQ_Allgather
- #define PMPI_Allgather PMPQ_Allgather
- 
- #define MPI_Allgatherv MPQ_Allgatherv
- #define PMPI_Allgatherv PMPQ_Allgatherv
- 
- #define MPI_Alloc_mem MPQ_Alloc_mem
- #define PMPI_Alloc_mem PMPQ_Alloc_mem
- 
- #define MPI_Allreduce MPQ_Allreduce
- #define PMPI_Allreduce PMPQ_Allreduce
- 
- #define MPI_Alltoall MPQ_Alltoall
- #define PMPI_Alltoall PMPQ_Alltoall
- 
- #define MPI_Alltoallv MPQ_Alltoallv
- #define PMPI_Alltoallv PMPQ_Alltoallv
- 
- #define MPI_Attr_delete MPQ_Attr_delete
- #define PMPI_Attr_delete PMPQ_Attr_delete
- 
- #define MPI_Attr_get MPQ_Attr_get
- #define PMPI_Attr_get PMPQ_Attr_get
- 
- #define MPI_Attr_put MPQ_Attr_put
- #define PMPI_Attr_put PMPQ_Attr_put
- 
- #define MPI_Barrier MPQ_Barrier
- #define PMPI_Barrier PMPQ_Barrier
- 
- #define MPI_Bcast MPQ_Bcast
- #define PMPI_Bcast PMPQ_Bcast
- 
- #define MPI_Bsend MPQ_Bsend
- #define PMPI_Bsend PMPQ_Bsend
- 
- #define MPI_Bsend_init MPQ_Bsend_init
- #define PMPI_Bsend_init PMPQ_Bsend_init
- 
- #define MPI_Buffer_attach MPQ_Buffer_attach
- #define PMPI_Buffer_attach PMPQ_Buffer_attach
- 
- #define MPI_Buffer_detach MPQ_Buffer_detach
- #define PMPI_Buffer_detach PMPQ_Buffer_detach
- 
- #define MPI_Cancel MPQ_Cancel
- #define PMPI_Cancel PMPQ_Cancel
- 
- #define MPI_Cart_coords MPQ_Cart_coords
- #define PMPI_Cart_coords PMPQ_Cart_coords
- 
- #define MPI_Cart_create MPQ_Cart_create
- #define PMPI_Cart_create PMPQ_Cart_create
- 
- #define MPI_Cart_get MPQ_Cart_get
- #define PMPI_Cart_get PMPQ_Cart_get
- 
- #define MPI_Cart_map MPQ_Cart_map
- #define PMPI_Cart_map PMPQ_Cart_map
- 
- #define MPI_Cart_rank MPQ_Cart_rank
- #define PMPI_Cart_rank PMPQ_Cart_rank
- 
- #define MPI_Cart_shift MPQ_Cart_shift
- #define PMPI_Cart_shift PMPQ_Cart_shift
- 
- #define MPI_Cart_sub MPQ_Cart_sub
- #define PMPI_Cart_sub PMPQ_Cart_sub
- 
- #define MPI_Cartdim_get MPQ_Cartdim_get
- #define PMPI_Cartdim_get PMPQ_Cartdim_get
- 
- #define MPI_Close_port MPQ_Close_port
- #define PMPI_Close_port PMPQ_Close_port
- 
- #define MPI_Comm_call_errhandler MPQ_Comm_call_errhandler
- #define PMPI_Comm_call_errhandler PMPQ_Comm_call_errhandler
- 
- #define MPI_Comm_clone MPQ_Comm_clone
- #define PMPI_Comm_clone PMPQ_Comm_clone
- 
- #define MPI_Comm_compare MPQ_Comm_compare
- #define PMPI_Comm_compare PMPQ_Comm_compare
- 
- #define MPI_Comm_connect MPQ_Comm_connect
- #define PMPI_Comm_connect PMPQ_Comm_connect
- 
- #define MPI_Comm_create MPQ_Comm_create
- #define PMPI_Comm_create PMPQ_Comm_create
- 
- #define MPI_Comm_create_errhandler MPQ_Comm_create_errhandler
- #define PMPI_Comm_create_errhandler PMPQ_Comm_create_errhandler
- 
- #define MPI_Comm_create_keyval MPQ_Comm_create_keyval
- #define PMPI_Comm_create_keyval PMPQ_Comm_create_keyval
- 
- #define MPI_Comm_disconnect MPQ_Comm_disconnect
- #define PMPI_Comm_disconnect PMPQ_Comm_disconnect
- 
- #define MPI_Comm_dup MPQ_Comm_dup
- #define PMPI_Comm_dup PMPQ_Comm_dup
- 
- #define MPI_Comm_free MPQ_Comm_free
- #define PMPI_Comm_free PMPQ_Comm_free
- 
- #define MPI_Comm_free_keyval MPQ_Comm_free_keyval
- #define PMPI_Comm_free_keyval PMPQ_Comm_free_keyval
- 
- #define MPI_Comm_get_errhandler MPQ_Comm_get_errhandler
- #define PMPI_Comm_get_errhandler PMPQ_Comm_get_errhandler
- 
- #define MPI_Comm_get_name MPQ_Comm_get_name
- #define PMPI_Comm_get_name PMPQ_Comm_get_name
- 
- #define MPI_Comm_get_parent MPQ_Comm_get_parent
- #define PMPI_Comm_get_parent PMPQ_Comm_get_parent
- 
- #define MPI_Comm_group MPQ_Comm_group
- #define PMPI_Comm_group PMPQ_Comm_group
- 
- #define MPI_Comm_join MPQ_Comm_join
- #define PMPI_Comm_join PMPQ_Comm_join
- 
- #define MPI_Comm_rank MPQ_Comm_rank
- #define PMPI_Comm_rank PMPQ_Comm_rank
- 
- #define MPI_Comm_remote_group MPQ_Comm_remote_group
- #define PMPI_Comm_remote_group PMPQ_Comm_remote_group
- 
- #define MPI_Comm_remote_size MPQ_Comm_remote_size
- #define PMPI_Comm_remote_size PMPQ_Comm_remote_size
- 
- #define MPI_Comm_set_errhandler MPQ_Comm_set_errhandler
- #define PMPI_Comm_set_errhandler PMPQ_Comm_set_errhandler
- 
- #define MPI_Comm_set_name MPQ_Comm_set_name
- #define PMPI_Comm_set_name PMPQ_Comm_set_name
- 
- #define MPI_Comm_size MPQ_Comm_size
- #define PMPI_Comm_size PMPQ_Comm_size
- 
- #define MPI_Comm_spawn MPQ_Comm_spawn
- #define PMPI_Comm_spawn PMPQ_Comm_spawn
- 
- #define MPI_Comm_spawn_multiple MPQ_Comm_spawn_multiple
- #define PMPI_Comm_spawn_multiple PMPQ_Comm_spawn_multiple
- 
- #define MPI_Comm_split MPQ_Comm_split
- #define PMPI_Comm_split PMPQ_Comm_split
- 
- #define MPI_Comm_test_inter MPQ_Comm_test_inter
- #define PMPI_Comm_test_inter PMPQ_Comm_test_inter
- 
- #define MPI_DOUBLE_INT_var MPQ_DOUBLE_INT_var
- #define PMPI_DOUBLE_INT_var PMPQ_DOUBLE_INT_var
- 
- #define MPI_Dims_create MPQ_Dims_create
- #define PMPI_Dims_create PMPQ_Dims_create
- 
- #define MPI_Errhandler_create MPQ_Errhandler_create
- #define PMPI_Errhandler_create PMPQ_Errhandler_create
- 
- #define MPI_Errhandler_free MPQ_Errhandler_free
- #define PMPI_Errhandler_free PMPQ_Errhandler_free
- 
- #define MPI_Errhandler_get MPQ_Errhandler_get
- #define PMPI_Errhandler_get PMPQ_Errhandler_get
- 
- #define MPI_Errhandler_set MPQ_Errhandler_set
- #define PMPI_Errhandler_set PMPQ_Errhandler_set
- 
- #define MPI_Error_class MPQ_Error_class
- #define PMPI_Error_class PMPQ_Error_class
- 
- #define MPI_Error_string MPQ_Error_string
- #define PMPI_Error_string PMPQ_Error_string
- 
- #define MPI_Exscan MPQ_Exscan
- #define PMPI_Exscan PMPQ_Exscan
- 
- #define MPI_FLOAT_INT_var MPQ_FLOAT_INT_var
- #define PMPI_FLOAT_INT_var PMPQ_FLOAT_INT_var
- 
- #define MPI_File_c2f MPQ_File_c2f
- #define PMPI_File_c2f PMPQ_File_c2f
- 
- #define MPI_File_call_errhandler MPQ_File_call_errhandler
- #define PMPI_File_call_errhandler PMPQ_File_call_errhandler
- 
- #define MPI_File_close MPQ_File_close
- #define PMPI_File_close PMPQ_File_close
- 
- #define MPI_File_create_errhandler MPQ_File_create_errhandler
- #define PMPI_File_create_errhandler PMPQ_File_create_errhandler
- 
- #define MPI_File_delete MPQ_File_delete
- #define PMPI_File_delete PMPQ_File_delete
- 
- #define MPI_File_f2c MPQ_File_f2c
- #define PMPI_File_f2c PMPQ_File_f2c
- 
- #define MPI_File_get_amode MPQ_File_get_amode
- #define PMPI_File_get_amode PMPQ_File_get_amode
- 
- #define MPI_File_get_atomicity MPQ_File_get_atomicity
- #define PMPI_File_get_atomicity PMPQ_File_get_atomicity
- 
- #define MPI_File_get_byte_offset MPQ_File_get_byte_offset
- #define PMPI_File_get_byte_offset PMPQ_File_get_byte_offset
- 
- #define MPI_File_get_errhandler MPQ_File_get_errhandler
- #define PMPI_File_get_errhandler PMPQ_File_get_errhandler
- 
- #define MPI_File_get_group MPQ_File_get_group
- #define PMPI_File_get_group PMPQ_File_get_group
- 
- #define MPI_File_get_info MPQ_File_get_info
- #define PMPI_File_get_info PMPQ_File_get_info
- 
- #define MPI_File_get_position MPQ_File_get_position
- #define PMPI_File_get_position PMPQ_File_get_position
- 
- #define MPI_File_get_position_shared MPQ_File_get_position_shared
- #define PMPI_File_get_position_shared PMPQ_File_get_position_shared
- 
- #define MPI_File_get_size MPQ_File_get_size
- #define PMPI_File_get_size PMPQ_File_get_size
- 
- #define MPI_File_get_type_extent MPQ_File_get_type_extent
- #define PMPI_File_get_type_extent PMPQ_File_get_type_extent
- 
- #define MPI_File_get_view MPQ_File_get_view
- #define PMPI_File_get_view PMPQ_File_get_view
- 
- #define MPI_File_iread MPQ_File_iread
- #define PMPI_File_iread PMPQ_File_iread
- 
- #define MPI_File_iread_at MPQ_File_iread_at
- #define PMPI_File_iread_at PMPQ_File_iread_at
- 
- #define MPI_File_iread_shared MPQ_File_iread_shared
- #define PMPI_File_iread_shared PMPQ_File_iread_shared
- 
- #define MPI_File_iwrite MPQ_File_iwrite
- #define PMPI_File_iwrite PMPQ_File_iwrite
- 
- #define MPI_File_iwrite_at MPQ_File_iwrite_at
- #define PMPI_File_iwrite_at PMPQ_File_iwrite_at
- 
- #define MPI_File_iwrite_shared MPQ_File_iwrite_shared
- #define PMPI_File_iwrite_shared PMPQ_File_iwrite_shared
- 
- #define MPI_File_open MPQ_File_open
- #define PMPI_File_open PMPQ_File_open
- 
- #define MPI_File_preallocate MPQ_File_preallocate
- #define PMPI_File_preallocate PMPQ_File_preallocate
- 
- #define MPI_File_read MPQ_File_read
- #define PMPI_File_read PMPQ_File_read
- 
- #define MPI_File_read_all MPQ_File_read_all 
- #define PMPI_File_read_all PMPQ_File_read_all
- 
- #define MPI_File_read_all_begin MPQ_File_read_all_begin
- #define PMPI_File_read_all_begin PMPQ_File_read_all_begin
- 
- #define MPI_File_read_all_end MPQ_File_read_all_end
- #define PMPI_File_read_all_end PMPQ_File_read_all_end
- 
- #define MPI_File_read_at MPQ_File_read_at
- #define PMPI_File_read_at PMPQ_File_read_at
- 
- #define MPI_File_read_at_all MPQ_File_read_at_all
- #define PMPI_File_read_at_all PMPQ_File_read_at_all
- 
- #define MPI_File_read_at_all_begin MPQ_File_read_at_all_begin
- #define PMPI_File_read_at_all_begin PMPQ_File_read_at_all_begin
- 
- #define MPI_File_read_at_all_end MPQ_File_read_at_all_end
- #define PMPI_File_read_at_all_end PMPQ_File_read_at_all_end
- 
- #define MPI_File_read_ordered MPQ_File_read_ordered
- #define PMPI_File_read_ordered PMPQ_File_read_ordered
- 
- #define MPI_File_read_ordered_begin MPQ_File_read_ordered_begin
- #define PMPI_File_read_ordered_begin PMPQ_File_read_ordered_begin
- 
- #define MPI_File_read_ordered_end MPQ_File_read_ordered_end
- #define PMPI_File_read_ordered_end PMPQ_File_read_ordered_end
- 
- #define MPI_File_read_shared MPQ_File_read_shared
- #define PMPI_File_read_shared PMPQ_File_read_shared
- 
- #define MPI_File_seek MPQ_File_seek
- #define PMPI_File_seek PMPQ_File_seek
- 
- #define MPI_File_seek_shared MPQ_File_seek_shared
- #define PMPI_File_seek_shared PMPQ_File_seek_shared
- 
- #define MPI_File_set_atomicity MPQ_File_set_atomicity
- #define PMPI_File_set_atomicity PMPQ_File_set_atomicity
- 
- #define MPI_File_set_errhandler MPQ_File_set_errhandler
- #define PMPI_File_set_errhandler PMPQ_File_set_errhandler
- 
- #define MPI_File_set_info MPQ_File_set_info
- #define PMPI_File_set_info PMPQ_File_set_info
- 
- #define MPI_File_set_size MPQ_File_set_size
- #define PMPI_File_set_size PMPQ_File_set_size
- 
- #define MPI_File_set_view MPQ_File_set_view
- #define PMPI_File_set_view PMPQ_File_set_view
- 
- #define MPI_File_sync MPQ_File_sync
- #define PMPI_File_sync PMPQ_File_sync
- 
- #define MPI_File_write MPQ_File_write
- #define PMPI_File_write PMPQ_File_write
- 
- #define MPI_File_write_all MPQ_File_write_all
- #define PMPI_File_write_all PMPQ_File_write_all
- 
- #define MPI_File_write_all_begin MPQ_File_write_all_begin
- #define PMPI_File_write_all_begin PMPQ_File_write_all_begin
- 
- #define MPI_File_write_all_end MPQ_File_write_all_end
- #define PMPI_File_write_all_end PMPQ_File_write_all_end
- 
- #define MPI_File_write_at MPQ_File_write_at
- #define PMPI_File_write_at PMPQ_File_write_at
- 
- #define MPI_File_write_at_all MPQ_File_write_at_all
- #define PMPI_File_write_at_all PMPQ_File_write_at_all
- 
- #define MPI_File_write_at_all_begin MPQ_File_write_at_all_begin
- #define PMPI_File_write_at_all_begin PMPQ_File_write_at_all_begin
- 
- #define MPI_File_write_at_all_end MPQ_File_write_at_all_end
- #define PMPI_File_write_at_all_end PMPQ_File_write_at_all_end
- 
- #define MPI_File_write_ordered MPQ_File_write_ordered
- #define PMPI_File_write_ordered PMPQ_File_write_ordered
- 
- #define MPI_File_write_ordered_begin MPQ_File_write_ordered_begin
- #define PMPI_File_write_ordered_begin PMPQ_File_write_ordered_begin
- 
- #define MPI_File_write_ordered_end MPQ_File_write_ordered_end
- #define PMPI_File_write_ordered_end PMPQ_File_write_ordered_end
- 
- #define MPI_File_write_shared MPQ_File_write_shared
- #define PMPI_File_write_shared PMPQ_File_write_shared
- 
- #define MPI_Finalize MPQ_Finalize
- #define PMPI_Finalize PMPQ_Finalize
- 
- #define MPI_Finalized MPQ_Finalized
- #define PMPI_Finalized PMPQ_Finalized
- 
- #define MPI_Free_mem MPQ_Free_mem
- #define PMPI_Free_mem PMPQ_Free_mem
- 
- #define MPI_Gather MPQ_Gather
- #define PMPI_Gather PMPQ_Gather
- 
- #define MPI_Gatherv MPQ_Gatherv
- #define PMPI_Gatherv PMPQ_Gatherv
- 
- #define MPI_Get MPQ_Get
- #define PMPI_Get PMPQ_Get
- 
- #define MPI_Get_address MPQ_Get_address
- #define PMPI_Get_address PMPQ_Get_address
- 
- #define MPI_Get_count MPQ_Get_count
- #define PMPI_Get_count PMPQ_Get_count
- 
- #define MPI_Get_elements MPQ_Get_elements
- #define PMPI_Get_elements PMPQ_Get_elements
- 
- #define MPI_Get_processor_name MPQ_Get_processor_name
- #define PMPI_Get_processor_name PMPQ_Get_processor_name
- 
- #define MPI_Get_version MPQ_Get_version
- #define PMPI_Get_version PMPQ_Get_version
- 
- #define MPI_Graph_create MPQ_Graph_create
- #define PMPI_Graph_create PMPQ_Graph_create
- 
- #define MPI_Graph_get MPQ_Graph_get
- #define PMPI_Graph_get PMPQ_Graph_get
- 
- #define MPI_Graph_map MPQ_Graph_map
- #define PMPI_Graph_map PMPQ_Graph_map
- 
- #define MPI_Graph_neighbors MPQ_Graph_neighbors
- #define PMPI_Graph_neighbors PMPQ_Graph_neighbors
- 
- #define MPI_Graph_neighbors_count MPQ_Graph_neighbors_count
- #define PMPI_Graph_neighbors_count PMPQ_Graph_neighbors_count
- 
- #define MPI_Graphdims_get MPQ_Graphdims_get
- #define PMPI_Graphdims_get PMPQ_Graphdims_get
- 
- #define MPI_Grequest_complete MPQ_Grequest_complete
- #define PMPI_Grequest_complete PMPQ_Grequest_complete
- 
- #define MPI_Group_compare MPQ_Group_compare
- #define PMPI_Group_compare PMPQ_Group_compare
- 
- #define MPI_Group_difference MPQ_Group_difference
- #define PMPI_Group_difference PMPQ_Group_difference
- 
- #define MPI_Group_excl MPQ_Group_excl
- #define PMPI_Group_excl PMPQ_Group_excl
- 
- #define MPI_Group_free MPQ_Group_free
- #define PMPI_Group_free PMPQ_Group_free
- 
- #define MPI_Group_incl MPQ_Group_incl
- #define PMPI_Group_incl PMPQ_Group_incl
- 
- #define MPI_Group_intersection MPQ_Group_intersection
- #define PMPI_Group_intersection PMPQ_Group_intersection
- 
- #define MPI_Group_range_excl MPQ_Group_range_excl
- #define PMPI_Group_range_excl PMPQ_Group_range_excl
- 
- #define MPI_Group_range_incl MPQ_Group_range_incl
- #define PMPI_Group_range_incl PMPQ_Group_range_incl
- 
- #define MPI_Group_rank MPQ_Group_rank
- #define PMPI_Group_rank PMPQ_Group_rank
- 
- #define MPI_Group_size MPQ_Group_size
- #define PMPI_Group_size PMPQ_Group_size
- 
- #define MPI_Group_translate_ranks MPQ_Group_translate_ranks
- #define PMPI_Group_translate_ranks PMPQ_Group_translate_ranks
- 
- #define MPI_Group_union MPQ_Group_union
- #define PMPI_Group_union PMPQ_Group_union
- 
- #define MPI_Ibsend MPQ_Ibsend
- #define PMPI_Ibsend PMPQ_Ibsend
- 
- #define MPI_Info_c2f MPQ_Info_c2f
- #define PMPI_Info_c2f PMPQ_Info_c2f
- 
- #define MPI_Info_create MPQ_Info_create
- #define PMPI_Info_create PMPQ_Info_create
- 
- #define MPI_Info_delete MPQ_Info_delete
- #define PMPI_Info_delete PMPQ_Info_delete
- 
- #define MPI_Info_dup MPQ_Info_dup
- #define PMPI_Info_dup PMPQ_Info_dup
- 
- #define MPI_Info_f2c MPQ_Info_f2c
- #define PMPI_Info_f2c PMPQ_Info_f2c
- 
- #define MPI_Info_free MPQ_Info_free
- #define PMPI_Info_free PMPQ_Info_free
- 
- #define MPI_Info_get MPQ_Info_get
- #define PMPI_Info_get PMPQ_Info_get
- 
- #define MPI_Info_get_nkeys MPQ_Info_get_nkeys
- #define PMPI_Info_get_nkeys PMPQ_Info_get_nkeys
- 
- #define MPI_Info_get_nthkey MPQ_Info_get_nthkey
- #define PMPI_Info_get_nthkey PMPQ_Info_get_nthkey
- 
- #define MPI_Info_get_valuelen MPQ_Info_get_valuelen
- #define PMPI_Info_get_valuelen PMPQ_Info_get_valuelen
- 
- #define MPI_Info_set MPQ_Info_set
- #define PMPI_Info_set PMPQ_Info_set
- 
- #define MPI_Init MPQ_Init
- #define PMPI_Init PMPQ_Init
- 
- #define MPI_Init_thread MPQ_Init_thread
- #define PMPI_Init_thread PMPQ_Init_thread
- 
- #define MPI_Initialized MPQ_Initialized
- #define PMPI_Initialized PMPQ_Initialized
- 
- #define MPI_Intercomm_create MPQ_Intercomm_create
- #define PMPI_Intercomm_create PMPQ_Intercomm_create
- 
- #define MPI_Intercomm_merge MPQ_Intercomm_merge
- #define PMPI_Intercomm_merge PMPQ_Intercomm_merge
- 
- #define MPI_Iprobe MPQ_Iprobe
- #define PMPI_Iprobe PMPQ_Iprobe
- 
- #define MPI_Irecv MPQ_Irecv
- #define PMPI_Irecv PMPQ_Irecv
- 
- #define MPI_Irsend MPQ_Irsend
- #define PMPI_Irsend PMPQ_Irsend
- 
- #define MPI_Isend MPQ_Isend
- #define PMPI_Isend PMPQ_Isend
- 
- #define MPI_Issend MPQ_Issend
- #define PMPI_Issend PMPQ_Issend
- 
- #define MPI_Keyval_create MPQ_Keyval_create
- #define PMPI_Keyval_create PMPQ_Keyval_create
- 
- #define MPI_Keyval_free MPQ_Keyval_free
- #define PMPI_Keyval_free PMPQ_Keyval_free
- 
- #define MPI_LONG_INT_var MPQ_LONG_INT_var
- #define PMPI_LONG_INT_var PMPQ_LONG_INT_var
- 
- #define MPI_Lookup_name MPQ_Lookup_name
- #define PMPI_Lookup_name PMPQ_Lookup_name
- 
- #define MPI_Name_get MPQ_Name_get
- #define PMPI_Name_get PMPQ_Name_get
- 
- #define MPI_Name_put MPQ_Name_put
- #define PMPI_Name_put PMPQ_Name_put
- 
- #define MPI_Op_create MPQ_Op_create
- #define PMPI_Op_create PMPQ_Op_create
- 
- #define MPI_Op_free MPQ_Op_free
- #define PMPI_Op_free PMPQ_Op_free
- 
- #define MPI_Open_port MPQ_Open_port
- #define PMPI_Open_port PMPQ_Open_port
- 
- #define MPI_Pack MPQ_Pack
- #define PMPI_Pack PMPQ_Pack
- 
- #define MPI_Pack_external MPQ_Pack_external
- #define PMPI_Pack_external PMPQ_Pack_external
- 
- #define MPI_Pack_size MPQ_Pack_size
- #define PMPI_Pack_size PMPQ_Pack_size
- 
- #define MPI_Pcontrol MPQ_Pcontrol
- #define PMPI_Pcontrol PMPQ_Pcontrol
- 
- #define MPI_Probe MPQ_Probe
- #define PMPI_Probe PMPQ_Probe
- 
- #define MPI_Publish_name MPQ_Publish_name
- #define PMPI_Publish_name PMPQ_Publish_name
- 
- #define MPI_Put MPQ_Put
- #define PMPI_Put PMPQ_Put
- 
- #define MPI_Query_thread MPQ_Query_thread
- #define PMPI_Query_thread PMPQ_Query_thread
- 
- #define MPI_Recv MPQ_Recv
- #define PMPI_Recv PMPQ_Recv
- 
- #define MPI_Recv_init MPQ_Recv_init
- #define PMPI_Recv_init PMPQ_Recv_init
- 
- #define MPI_Reduce MPQ_Reduce
- #define PMPI_Reduce PMPQ_Reduce
- 
- #define MPI_Reduce_scatter MPQ_Reduce_scatter
- #define PMPI_Reduce_scatter PMPQ_Reduce_scatter
- 
- #define MPI_Register_datarep MPQ_Register_datarep
- #define PMPI_Register_datarep PMPQ_Register_datarep
- 
- #define MPI_Request_c2f MPQ_Request_c2f
- #define PMPI_Request_c2f PMPQ_Request_c2f
- 
- #define MPI_Request_free MPQ_Request_free
- #define PMPI_Request_free PMPQ_Request_free
- 
- #define MPI_Request_get_status MPQ_Request_get_status
- #define PMPI_Request_get_status PMPQ_Request_get_status
- 
- #define MPI_Rsend MPQ_Rsend
- #define PMPI_Rsend PMPQ_Rsend
- 
- #define MPI_Rsend_init MPQ_Rsend_init
- #define PMPI_Rsend_init PMPQ_Rsend_init
- 
- #define MPI_SHORT_INT_var MPQ_SHORT_INT_var
- #define PMPI_SHORT_INT_var PMPQ_SHORT_INT_var
- 
- #define MPI_Scan MPQ_Scan
- #define PMPI_Scan PMPQ_Scan
- 
- #define MPI_Scatter MPQ_Scatter
- #define PMPI_Scatter PMPQ_Scatter
- 
- #define MPI_Scatterv MPQ_Scatterv
- #define PMPI_Scatterv PMPQ_Scatterv
- 
- #define MPI_Send MPQ_Send
- #define PMPI_Send PMPQ_Send
- 
- #define MPI_Send_init MPQ_Send_init
- #define PMPI_Send_init PMPQ_Send_init
- 
- #define MPI_Sendrecv MPQ_Sendrecv
- #define PMPI_Sendrecv PMPQ_Sendrecv
- 
- #define MPI_Sendrecv_replace MPQ_Sendrecv_replace
- #define PMPI_Sendrecv_replace PMPQ_Sendrecv_replace
- 
- #define MPI_Sizeof MPQ_Sizeof
- #define PMPI_Sizeof PMPQ_Sizeof
- 
- #define MPI_Ssend MPQ_Ssend
- #define PMPI_Ssend PMPQ_Ssend
- 
- #define MPI_Ssend_init MPQ_Ssend_init
- #define PMPI_Ssend_init PMPQ_Ssend_init
- 
- #define MPI_Start MPQ_Start
- #define PMPI_Start PMPQ_Start
- 
- #define MPI_Startall MPQ_Startall
- #define PMPI_Startall PMPQ_Startall
- 
- #define MPI_Status_c2f MPQ_Status_c2f
- #define PMPI_Status_c2f PMPQ_Status_c2f
- 
- #define MPI_Status_f2c MPQ_Status_f2c
- #define PMPI_Status_f2c PMPQ_Status_f2c
- 
- #define MPI_Status_set_cancelled MPQ_Status_set_cancelled
- #define PMPI_Status_set_cancelled PMPQ_Status_set_cancelled
- 
- #define MPI_Status_set_elements MPQ_Status_set_elements
- #define PMPI_Status_set_elements PMPQ_Status_set_elements
- 
- #define MPI_Test MPQ_Test
- #define PMPI_Test PMPQ_Test
- 
- #define MPI_Test_cancelled MPQ_Test_cancelled
- #define PMPI_Test_cancelled PMPQ_Test_cancelled
- 
- #define MPI_Testall MPQ_Testall
- #define PMPI_Testall PMPQ_Testall
- 
- #define MPI_Testany MPQ_Testany
- #define PMPI_Testany PMPQ_Testany
- 
- #define MPI_Testsome MPQ_Testsome
- #define PMPI_Testsome PMPQ_Testsome
- 
- #define MPI_Topo_status MPQ_Topo_status
- #define PMPI_Topo_status PMPQ_Topo_status
- 
- #define MPI_Topo_test MPQ_Topo_test
- #define PMPI_Topo_test PMPQ_Topo_test
- 
- #define MPI_Type_commit MPQ_Type_commit
- #define PMPI_Type_commit PMPQ_Type_commit
- 
- #define MPI_Type_contiguous MPQ_Type_contiguous
- #define PMPI_Type_contiguous PMPQ_Type_contiguous
- 
- #define MPI_Type_count MPQ_Type_count
- #define PMPI_Type_count PMPQ_Type_count
- 
- #define MPI_Type_create_darray MPQ_Type_create_darray
- #define PMPI_Type_create_darray PMPQ_Type_create_darray
- 
- #define MPI_Type_create_hindexed MPQ_Type_create_hindexed
- #define PMPI_Type_create_hindexed PMPQ_Type_create_hindexed
- 
- #define MPI_Type_create_indexed_block MPQ_Type_create_indexed_block
- #define PMPI_Type_create_indexed_block PMPQ_Type_create_indexed_block
- 
- #define MPI_Type_create_keyval MPQ_Type_create_keyval
- #define PMPI_Type_create_keyval PMPQ_Type_create_keyval
- 
- #define MPI_Type_create_resized MPQ_Type_create_resized
- #define PMPI_Type_create_resized PMPQ_Type_create_resized
- 
- #define MPI_Type_create_struct MPQ_Type_create_struct
- #define PMPI_Type_create_struct PMPQ_Type_create_struct
- 
- #define MPI_Type_create_subarray MPQ_Type_create_subarray
- #define PMPI_Type_create_subarray PMPQ_Type_create_subarray
- 
- #define MPI_Type_delete_attr MPQ_Type_delete_attr
- #define PMPI_Type_delete_attr PMPQ_Type_delete_attr
- 
- #define MPI_Type_dup MPQ_Type_dup
- #define PMPI_Type_dup PMPQ_Type_dup
- 
- #define MPI_Type_extent MPQ_Type_extent
- #define PMPI_Type_extent PMPQ_Type_extent
- 
- #define MPI_Type_free MPQ_Type_free
- #define PMPI_Type_free PMPQ_Type_free
- 
- #define MPI_Type_free_keyval MPQ_Type_free_keyval
- #define PMPI_Type_free_keyval PMPQ_Type_free_keyval
- 
- #define MPI_Type_get_cont MPQ_Type_get_cont
- #define PMPI_Type_get_cont PMPQ_Type_get_cont
- 
- #define MPI_Type_get_contents MPQ_Type_get_contents
- #define PMPI_Type_get_contents PMPQ_Type_get_contents
- 
- #define MPI_Type_get_env MPQ_Type_get_env
- #define PMPI_Type_get_env PMPQ_Type_get_env
- 
- #define MPI_Type_get_envelope MPQ_Type_get_envelope
- #define PMPI_Type_get_envelope PMPQ_Type_get_envelope
- 
- #define MPI_Type_get_extent MPQ_Type_get_extent
- #define PMPI_Type_get_extent PMPQ_Type_get_extent
- 
- #define MPI_Type_get_name MPQ_Type_get_name
- #define PMPI_Type_get_name PMPQ_Type_get_name
- 
- #define MPI_Type_get_true_extent MPQ_Type_get_true_extent
- #define PMPI_Type_get_true_extent PMPQ_Type_get_true_extent
- 
- #define MPI_Type_hindexed MPQ_Type_hindexed
- #define PMPI_Type_hindexed PMPQ_Type_hindexed
- 
- #define MPI_Type_hvector MPQ_Type_hvector
- #define PMPI_Type_hvector PMPQ_Type_hvector
- 
- #define MPI_Type_indexed MPQ_Type_indexed
- #define PMPI_Type_indexed PMPQ_Type_indexed
- 
- #define MPI_Type_lb MPQ_Type_lb
- #define PMPI_Type_lb PMPQ_Type_lb
- 
- #define MPI_Type_match_size MPQ_Type_match_size
- #define PMPI_Type_match_size PMPQ_Type_match_size
- 
- #define MPI_Type_set_name MPQ_Type_set_name
- #define PMPI_Type_set_name PMPQ_Type_set_name
- 
- #define MPI_Type_size MPQ_Type_size
- #define PMPI_Type_size PMPQ_Type_size
- 
- #define MPI_Type_struct MPQ_Type_struct
- #define PMPI_Type_struct PMPQ_Type_struct
- 
- #define MPI_Type_ub MPQ_Type_ub
- #define PMPI_Type_ub PMPQ_Type_ub
- 
- #define MPI_Type_vector MPQ_Type_vector
- #define PMPI_Type_vector PMPQ_Type_vector
- 
- #define MPI_Unpack MPQ_Unpack
- #define PMPI_Unpack PMPQ_Unpack
- 
- #define MPI_Unpack_external MPQ_Unpack_external
- #define PMPI_Unpack_external PMPQ_Unpack_external
- 
- #define MPI_Unpublish_name MPQ_Unpublish_name
- #define PMPI_Unpublish_name PMPQ_Unpublish_name
- 
- #define MPI_Wait MPQ_Wait
- #define PMPI_Wait PMPQ_Wait
- 
- #define MPI_Waitall MPQ_Waitall
- #define PMPI_Waitall PMPQ_Waitall
- 
- #define MPI_Waitany MPQ_Waitany
- #define PMPI_Waitany PMPQ_Waitany
- 
- #define MPI_Waitsome MPQ_Waitsome
- #define PMPI_Waitsome PMPQ_Waitsome
- 
- #define MPI_Win_call_errhandler MPQ_Win_call_errhandler
- #define PMPI_Win_call_errhandler PMPQ_Win_call_errhandler
- 
- #define MPI_Win_complete MPQ_Win_complete
- #define PMPI_Win_complete PMPQ_Win_complete
- 
- #define MPI_Win_create MPQ_Win_create
- #define PMPI_Win_create PMPQ_Win_create
- 
- #define MPI_Win_create_errhandler MPQ_Win_create_errhandler
- #define PMPI_Win_create_errhandler PMPQ_Win_create_errhandler
- 
- #define MPI_Win_create_keyval MPQ_Win_create_keyval
- #define PMPI_Win_create_keyval PMPQ_Win_create_keyval
- 
- #define MPI_Win_fence MPQ_Win_fence
- #define PMPI_Win_fence PMPQ_Win_fence
- 
- #define MPI_Win_free MPQ_Win_free
- #define PMPI_Win_free PMPQ_Win_free
- 
- #define MPI_Win_free_keyval MPQ_Win_free_keyval
- #define PMPI_Win_free_keyval PMPQ_Win_free_keyval
- 
- #define MPI_Win_get_errhandler MPQ_Win_get_errhandler
- #define PMPI_Win_get_errhandler PMPQ_Win_get_errhandler
- 
- #define MPI_Win_get_group MPQ_Win_get_group
- #define PMPI_Win_get_group PMPQ_Win_get_group
- 
- #define MPI_Win_get_name MPQ_Win_get_name
- #define PMPI_Win_get_name PMPQ_Win_get_name
- 
- #define MPI_Win_lock MPQ_Win_lock
- #define PMPI_Win_lock PMPQ_Win_lock
- 
- #define MPI_Win_post MPQ_Win_post
- #define PMPI_Win_post PMPQ_Win_post
- 
- #define MPI_Win_set_attr MPQ_Win_set_attr
- #define PMPI_Win_set_attr PMPQ_Win_set_attr
- 
- #define MPI_Win_set_errhandler MPQ_Win_set_errhandler
- #define PMPI_Win_set_errhandler PMPQ_Win_set_errhandler
- 
- #define MPI_Win_set_name MPQ_Win_set_name
- #define PMPI_Win_set_name PMPQ_Win_set_name
- 
- #define MPI_Win_start MPQ_Win_start
- #define PMPI_Win_start PMPQ_Win_start
- 
- #define MPI_Win_unlock MPQ_Win_unlock
- #define PMPI_Win_unlock PMPQ_Win_unlock
- 
- #define MPI_Win_wait MPQ_Win_wait
- #define PMPI_Win_wait PMPQ_Win_wait
- 
- #define MPI_Wtick MPQ_Wtick
- #define PMPI_Wtick PMPQ_Wtick
- 
- #define MPI_Wtime MPQ_Wtime
- #define PMPI_Wtime PMPQ_Wtime
- 
- /**************************/
- /* Begin MPI-2 Extensions */
- /**************************/
- 
- #define MPI_Open MPQ_Open
- #define PMPI_Open PMPQ_Open
- 
- #define MPI_Close MPQ_Close
- #define PMPI_Close PMPQ_Close
- 
- #define MPI_Comm_connect MPQ_Comm_connect
- #define PMPI_Comm_connect PMPQ_Comm_connect
- 
- #define MPI_Comm_accept MPQ_Comm_accept
- #define PMPI_Comm_accept PMPQ_Comm_accept
- 
- /************************/
- /* End MPI-2 Extensions */
- /************************/
- 
- #endif   /* 0 */
- 
  #endif /* !defined(MPID_DEFS_H) */
--- 19,22 ----
Index: mpid/globus2/mpirun.globus2.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/mpirun.globus2.in,v
retrieving revision 1.13
retrieving revision 1.14
diff -c -r1.13 -r1.14
*** mpid/globus2/mpirun.globus2.in	2002/08/23 21:57:27	1.13
--- mpid/globus2/mpirun.globus2.in	2003/01/09 16:30:03	1.14
***************
*** 78,84 ****
  	    echo "   (directory=\"$my_dirname\")"
  	    echo "   (executable=\"$my_progname\")"
  	else
! 	    echo "   (executable=\"\$(GLOBUSRUN_GASS_URL)$my_progname\")"
  	fi
  	echo ")"
  
--- 78,84 ----
  	    echo "   (directory=\"$my_dirname\")"
  	    echo "   (executable=\"$my_progname\")"
  	else
! 	    echo "   (executable=\$(GLOBUSRUN_GASS_URL) # \"$my_progname\")"
  	fi
  	echo ")"
  
Index: mpid/globus2/pr_mpi_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/pr_mpi_g.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -c -r1.45 -r1.46
*** mpid/globus2/pr_mpi_g.c	2002/11/06 21:21:24	1.45
--- mpid/globus2/pr_mpi_g.c	2003/01/09 11:36:05	1.46
***************
*** 72,78 ****
  
      MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 72,78 ----
  
      MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 102,108 ****
  	MPI_Finalize();
      }
  
!   fn_exit:
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
  } /* end mp_finalize() */
  
--- 102,108 ----
  	MPI_Finalize();
      }
  
!   /* fn_exit: */
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
  } /* end mp_finalize() */
  
***************
*** 158,164 ****
  
      globus_libc_free(buff);
  
!   fn_exit:
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
  } /* end mp_create_miproto() */
  
--- 158,164 ----
  
      globus_libc_free(buff);
  
!   /* fn_exit: */
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
  } /* end mp_create_miproto() */
  
***************
*** 186,192 ****
  
      debug_check_mpi_result("MPI_Send()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 186,192 ----
  
      debug_check_mpi_result("MPI_Send()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 218,224 ****
  
      debug_check_mpi_result("MPI_Isend()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 218,224 ----
  
      debug_check_mpi_result("MPI_Isend()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 248,254 ****
  
      debug_check_mpi_result("MPI_Ssend()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 248,254 ----
  
      debug_check_mpi_result("MPI_Ssend()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 280,286 ****
  
      debug_check_mpi_result("MPI_Issend()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 280,286 ----
  
      debug_check_mpi_result("MPI_Issend()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 299,305 ****
  
      debug_check_mpi_result("MPI_Cancel()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 299,305 ----
  
      debug_check_mpi_result("MPI_Cancel()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 334,340 ****
  
      debug_check_mpi_result("MPI_Recv()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 334,340 ----
  
      debug_check_mpi_result("MPI_Recv()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 354,360 ****
  
      debug_check_mpi_result("MPI_Wait()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 354,360 ----
  
      debug_check_mpi_result("MPI_Wait()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 374,380 ****
  
      debug_check_mpi_result("MPI_Test_cancelled()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 374,380 ----
  
      debug_check_mpi_result("MPI_Test_cancelled()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 395,401 ****
  
      debug_check_mpi_result("MPI_Test()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 395,401 ----
  
      debug_check_mpi_result("MPI_Test()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 420,426 ****
  
      debug_check_mpi_result("MPI_Probe()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 420,426 ----
  
      debug_check_mpi_result("MPI_Probe()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 451,457 ****
  
      debug_check_mpi_result("MPI_IProbe()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 451,457 ----
  
      debug_check_mpi_result("MPI_IProbe()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 475,481 ****
  
      debug_check_mpi_result("MPI_Get_count()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 475,481 ----
  
      debug_check_mpi_result("MPI_Get_count()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 499,505 ****
  
      debug_check_mpi_result("MPI_Get_elements()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 499,505 ----
  
      debug_check_mpi_result("MPI_Get_elements()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 517,523 ****
  
      rc = ((MPI_Status *) status)->MPI_SOURCE;
  
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_MP, DEBUG_INFO_RC,
  		 ("source=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
--- 517,523 ----
  
      rc = ((MPI_Status *) status)->MPI_SOURCE;
  
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_MP, DEBUG_INFO_RC,
  		 ("source=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
***************
*** 536,542 ****
  
      rc = ((MPI_Status *) status)->MPI_TAG;
  
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_MP, DEBUG_INFO_RC,
  		 ("tag=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
--- 536,542 ----
  
      rc = ((MPI_Status *) status)->MPI_TAG;
  
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_MP, DEBUG_INFO_RC,
  		 ("tag=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
***************
*** 555,561 ****
  
      rc = mpi_error_to_vmpi_error(((MPI_Status *) status)->MPI_ERROR);
  
!   fn_exit:
      DEBUG_PRINTF(DEBUG_MODULE_MP, DEBUG_INFO_RC,
  		 ("error=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
--- 555,561 ----
  
      rc = mpi_error_to_vmpi_error(((MPI_Status *) status)->MPI_ERROR);
  
!   /* fn_exit: */
      DEBUG_PRINTF(DEBUG_MODULE_MP, DEBUG_INFO_RC,
  		 ("error=%d\n", rc));
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
***************
*** 605,611 ****
  		     ("vendor MPI_Comm_split() failed"));
      }
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
--- 605,611 ----
  		     ("vendor MPI_Comm_split() failed"));
      }
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
***************
*** 641,647 ****
  		     ("vendor MPI_Comm_dup() failed"));
      }
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
--- 641,647 ----
  		     ("vendor MPI_Comm_dup() failed"));
      }
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
***************
*** 688,694 ****
  		     ("vendor MPI_Intercomm_create() failed"));
      }
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
--- 688,694 ----
  		     ("vendor MPI_Intercomm_create() failed"));
      }
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
***************
*** 724,730 ****
  		     ("vendor MPI_Intercomm_merge() failed"));
      }
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
--- 724,730 ----
  		     ("vendor MPI_Intercomm_merge() failed"));
      }
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
***************
*** 754,760 ****
  		     ("vendor MPI_Comm_free() failed"));
      }
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
--- 754,760 ----
  		     ("vendor MPI_Comm_free() failed"));
      }
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_PRINTF(DEBUG_MODULE_MP | DEBUG_MODULE_COMM, DEBUG_INFO_RC,
  		 ("rc=%d\n", rc));
***************
*** 776,782 ****
  
      debug_check_mpi_result("MPI_Request_free()", rc);
  
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 776,782 ----
  
      debug_check_mpi_result("MPI_Request_free()", rc);
  
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 919,925 ****
           break;
       } /* end switch */
  
!   fn_exit:
      *((MPI_Datatype *) mpi_type) = rc;
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("mpi_type=%d\n", rc));
--- 919,925 ----
           break;
       } /* end switch */
  
!   /* fn_exit: */
      *((MPI_Datatype *) mpi_type) = rc;
      DEBUG_PRINTF(DEBUG_MODULE_TYPES, DEBUG_INFO_RC,
  		 ("mpi_type=%d\n", rc));
***************
*** 1041,1047 ****
  
      debug_check_mpi_result("MPI_bootstrap_Bcast()", rc);
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 1041,1047 ----
  
      debug_check_mpi_result("MPI_bootstrap_Bcast()", rc);
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 1068,1074 ****
  
      debug_check_mpi_result("MPI_bootstrap_Gather()", rc);
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 1068,1074 ----
  
      debug_check_mpi_result("MPI_bootstrap_Gather()", rc);
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
***************
*** 1100,1106 ****
  
      debug_check_mpi_result("MPI_bootstrap_Gatherv()", rc);
      
!   fn_exit:
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
--- 1100,1106 ----
  
      debug_check_mpi_result("MPI_bootstrap_Gatherv()", rc);
      
!   /* fn_exit: */
      rc = mpi_error_to_vmpi_error(rc);
      DEBUG_FN_EXIT(DEBUG_MODULE_MP);
      return rc;
Index: mpid/globus2/pr_tcp_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/pr_tcp_g.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -c -r1.56 -r1.57
*** mpid/globus2/pr_tcp_g.c	2002/12/16 20:59:10	1.56
--- mpid/globus2/pr_tcp_g.c	2003/01/08 12:41:52	1.57
***************
*** 1,3 ****
--- 1,4 ----
+ #include "mpid.h"    /* GRIDFTP */
  #include "globdev.h"
  #include "reqalloc.h"
  #include "queue.h" /* for queue traversal stuff in cancelling message  */
***************
*** 15,20 ****
--- 16,22 ----
  extern globus_size_t      Headerlen;
  int			  MpichGlobus2TcpBufsz = 0;
  extern struct commworldchannels *CommWorldChannelsTable;
+ int MPICHX_PARALLELSOCKETS_PARAMETERS = MPI_KEYVAL_INVALID;  /* GRIDFTP */
  
  static void data_arrived(struct tcp_rw_handle_t *rwhp);
  static void send_cancel_result_over_tcp(char *msgid_src_commworld_id,
***************
*** 27,33 ****
--- 29,62 ----
  					unsigned long msgid_ctr);
  
  static globus_bool_t i_establish_socket(int dest_grank);
+ /*****************/
+ /* START GRIDFTP */
+ /*****************/
+ static void gridftp_connect_read_callback(void *callback_arg,
+                                 struct globus_ftp_control_handle_s *handle,
+                                 unsigned int stripe_ndx,
+                                 globus_bool_t resuse,
+                                 globus_object_t *error);
+ static void gridftp_read_all_callback(void * callback_arg,
+                                 globus_ftp_control_handle_t *handle,
+                                 globus_object_t *error,
+                                 globus_byte_t *buffer,
+                                 globus_size_t length,
+                                 globus_off_t offset,
+                                 globus_bool_t eof);
+ void g_ftp_monitor_init(g_ftp_perf_monitor_t *monitor);
+ void g_ftp_monitor_reset(g_ftp_perf_monitor_t *monitor);
+ static void test_result(globus_result_t res, char *msg, int line_no);
+ static void setup_ftp_handle(globus_ftp_control_handle_t *ftp_handle,
+                             struct gridftp_params *gfp);
+ static int enable_gridftp_internal(struct gridftp_params *gfp,
+                                     int partner_grank);
+ int enable_gridftp(struct MPIR_COMMUNICATOR *comm, void *attr_value);
+ /***************/
+ /* END GRIDFTP */
+ /***************/
  
+ 
  /**********************/
  /* Callback functions */
  /**********************/
***************
*** 396,401 ****
--- 425,435 ----
  		 *          cancel_success_flag, 
  		 *          msgid_src_commworld_id,msgid_src_commworld_displ,
  		 *          msgid_sec,msgid_usec,msgid_ctr,liba 
+                  *
+                  * START GRIDFTP
+                  * OR
+                  * type==gridftp_port, partner_grank, gridftp_port
+                  * END GRIDFTP
  		 */
  
                  globus_dc_get_int(&cp, &type, 1, (int) (rwhp->remote_format));
***************
*** 462,479 ****
  
  		    if (rwhp->dataorigin_bufflen)
  		    {
  			g_malloc(rwhp->incoming_raw_data, 
  				    globus_byte_t *, 
  				    rwhp->dataorigin_bufflen);
  
! 			rwhp->state = await_data;
! 			globus_io_register_read(&(rwhp->handle),
  				    rwhp->incoming_raw_data, /* data will sit */
  					  /* here when callback is envoked */
  				rwhp->dataorigin_bufflen, /* max nbytes */
  				rwhp->dataorigin_bufflen, /* wait for nbytes */
  						read_callback,
  				    (void *) rwhp); /* optional callback arg */
  		    }
  		    else
  		    {
--- 496,603 ----
  
  		    if (rwhp->dataorigin_bufflen)
  		    {
+                         struct channel_t *chp;    /* GRIDFTP */
+                         struct tcp_miproto_t *tp; /* GRIDFTP */
+                         int proto;                /* GRIDFTP */
+ 
  			g_malloc(rwhp->incoming_raw_data, 
  				    globus_byte_t *, 
  				    rwhp->dataorigin_bufflen);
+                         /* START GRIDFTP */
+                         /*********************************************/
+                         /* figuring out if this channel uses gridFTP */
+                         /*********************************************/
+ 
+                         /* NICK: have to check whether the grank used */
+                         /*       here assumes all comm=MPI_COMM_WORLD */
+                         if (!(chp = get_channel(rwhp->msg_id_src_grank)))
+                         {
+                             globus_libc_fprintf(stderr,
+                                 "ERROR: read_callback: await_header: "
+                                 "user_data: proc %d: failed get_channel "
+                                 "rwhp->msg_id_src_grank %d\n",
+                                 MPID_MyWorldRank, rwhp->msg_id_src_grank);
+                             print_channels();
+                             exit(-1);
+                         }
+                         else if (!(chp->selected_proto))
+                         {
+                             globus_libc_fprintf(stderr,
+                                 "ERROR: read_callback: await_header: "
+                                 "user_data: proc %d does not have selected "
+                                 "proto for rwhp->msg_id_src_grank %d\n",
+                                 MPID_MyWorldRank, rwhp->msg_id_src_grank);
+                             print_channels();
+                             exit(-1);
+                         }
+                         else if ((proto = (chp->selected_proto)->type) != tcp)
+                         {
+                             globus_libc_fprintf(stderr,
+                                 "ERROR: read_callback: await_header: "
+                                 "user_data: proc %d selected proto is not "
+                                 "TCP proto for rwhp->msg_id_src_grank %d\n",
+                                 MPID_MyWorldRank, rwhp->msg_id_src_grank);
+                             print_channels();
+                             exit(-1);
+                         } /* endif */
+                         tp = (chp->selected_proto)->info;
+                         if (tp->use_grid_ftp)
+                         {
+                             g_ftp_user_args_t ua;
+                             globus_result_t res;
+ 
+                             g_ftp_monitor_reset(&(tp->read_monitor));
+ 
+                             ua.monitor      = &(tp->read_monitor);
+                             ua.ftp_handle_r = &(tp->ftp_handle_r);
+                             ua.buffer       = rwhp->incoming_raw_data;
+                             ua.nbytes       = rwhp->dataorigin_bufflen;
+ 
+                             /* this can be used over and over again */
+ 
+                             res = globus_ftp_control_data_connect_read(
+                                     ua.ftp_handle_r,
+                                     gridftp_connect_read_callback,
+                                     (void *) &ua);
+                             if (res != GLOBUS_SUCCESS)
+                             {
+                                 globus_libc_fprintf(stderr,
+                                     "ERROR: read_callback: await_header: "
+                                     "user_data: proc %d failed "
+                                     "globus_ftp_control_data_connect_read"
+                                     "to rwhp->msg_id_src_grank %d\n",
+                                     MPID_MyWorldRank, rwhp->msg_id_src_grank);
+                                 exit(-1);
+                             } /* endif */
  
! 			    while(!(tp->read_monitor.done))
! 			    {
! 				G2_WAIT
! 			    } /* endwhile */
! 
!                             data_arrived(rwhp);
!                             /* transition to 'await_header' state */
!                             rwhp->state = await_header;
!                             globus_io_register_read(&(rwhp->handle),
!                                     rwhp->incoming_header, /* data will sit */
!                                           /* here when callback is envoked */
!                                 rwhp->incoming_header_len, /* max nbytes */
!                                 rwhp->incoming_header_len, /* wait for nbytes */
!                                         read_callback,
!                                     (void *) rwhp); /* optional callback arg */
!                         }
!                         else
!                         {
!                         /* END GRIDFTP */
! 			    rwhp->state = await_data;
! 			    globus_io_register_read(&(rwhp->handle),
  				    rwhp->incoming_raw_data, /* data will sit */
  					  /* here when callback is envoked */
  				rwhp->dataorigin_bufflen, /* max nbytes */
  				rwhp->dataorigin_bufflen, /* wait for nbytes */
  						read_callback,
  				    (void *) rwhp); /* optional callback arg */
+                         } /* endif GRIDFTP */
  		    }
  		    else
  		    {
***************
*** 724,729 ****
--- 848,918 ----
  					    read_callback,
  				    (void *) rwhp); /* optional callback arg */
  		}
+ 		else if (type == gridftp_port)
+ 		{
+ 		    /* assumes that partner_grank w.r.t. comm=MPI_COMM_WORLD */
+ 		    struct channel_t *chp;
+ 		    struct tcp_miproto_t *tp;
+ 		    int proto;
+ 		    int partner_grank;
+ 		    int gridftp_port;
+ 
+ 		    /* unpacking rest of header: partner_grank, gridftp_port */
+ 		    globus_dc_get_int(&cp, &partner_grank, 1, 
+ 					(int) (rwhp->remote_format));
+ 		    globus_dc_get_int(&cp, &gridftp_port, 1, 
+ 					(int) (rwhp->remote_format));
+ 
+ /* fprintf(stderr, "NICK: %d: read_callback: await_header: gridftp_port: partner_grank %d\n", MPID_MyWorldRank, partner_grank);  */
+ 		    /***************************************/
+ 		    /* validating partner_grank proto==TCP */
+ 		    /***************************************/
+ 
+ 		    if (!(chp = get_channel(partner_grank)))
+ 		    {
+ 			globus_libc_fprintf(stderr,
+ 			    "ERROR: read_callback: await_header: gridftp_port: "
+ 			    "proc %d: failed get_channel partner_grank %d\n",
+ 			    MPID_MyWorldRank, partner_grank);
+ 			print_channels();
+ 			exit(-1);
+ 		    }
+ 		    else if (!(chp->selected_proto))
+ 		    {
+ 			globus_libc_fprintf(stderr,
+ 			    "ERROR: read_callback: await_header: gridftp_port: "
+ 			    "proc %d does not have selected proto for "
+ 			    "partner_grank %d\n",
+ 			    MPID_MyWorldRank, partner_grank);
+ 			print_channels();
+ 			exit(-1);
+ 		    }
+ 		    else if ((proto = (chp->selected_proto)->type) != tcp)
+ 		    {
+ 			globus_libc_fprintf(stderr,
+ 			    "ERROR: read_callback: await_header: gridftp_port: "
+ 			    "proc %d selected proto is not "
+ 			    "TCP proto for partner_grank %d\n",
+ 				    MPID_MyWorldRank, partner_grank);
+ 			print_channels();
+ 			exit(-1);
+ 		    } /* endif */
+ 
+ 		    tp = (chp->selected_proto)->info;
+ 
+ 		    tp->partner_port       = gridftp_port;
+ 		    tp->recvd_partner_port = GLOBUS_TRUE;
+ 
+ 		    /* transition back to same state, 'await_header' */
+ 		    rwhp->state = await_header;
+ 		    globus_io_register_read(&(rwhp->handle),
+ 				    rwhp->incoming_header, /* data will sit */
+ 					  /* here when callback is envoked */
+ 				rwhp->incoming_header_len, /* max nbytes */
+ 				rwhp->incoming_header_len, /* wait for nbytes */
+ 					    read_callback,
+ 				    (void *) rwhp); /* optional callback arg */
+ 		}
  		else
  		{
  		    char err[1024];
***************
*** 1473,1475 ****
--- 1662,2029 ----
  
  } /* end setting i_establish_socket() */
  
+ /*****************/
+ /* START GRIDFTP */
+ /*****************/
+ 
+ static void test_result(globus_result_t res, char *msg, int line_no)
+ {
+ 
+     if(res != GLOBUS_SUCCESS)
+     {
+         printf("error:%s at line %d\n",
+             globus_object_printable_to_string(globus_error_get(res)),
+             line_no);
+         printf("%s\n", msg);
+         assert(GLOBUS_FALSE);
+     } /* endif */
+ 
+ } /* end test_result() */
+ 
+ static void setup_ftp_handle(globus_ftp_control_handle_t *ftp_handle,
+ 			    struct gridftp_params *gfp)
+ {
+     globus_result_t                             res;
+     globus_ftp_control_tcpbuffer_t              tcp_buffer;
+     globus_ftp_control_parallelism_t            parallelism;
+ 
+     /*
+      *  set transfer type
+      */
+     res = globus_ftp_control_handle_init(ftp_handle);
+     test_result(res, "setup_ftp_handle:handle_init", __LINE__);
+     /* NICK: put into binary mode */
+     res = globus_ftp_control_local_type(ftp_handle,
+ 				      GLOBUS_FTP_CONTROL_TYPE_IMAGE,
+ 				      0);
+     test_result(res, "setup_ftp_handle:local_type", __LINE__);
+ 
+     /*
+      *  set transfer mode
+      */
+     /* NICK: data channel mode of ftp */
+     res = globus_ftp_control_local_mode(ftp_handle,
+ 				      GLOBUS_FTP_CONTROL_MODE_EXTENDED_BLOCK);
+     test_result(res, "setup_ftp_handle:local_mode", __LINE__);
+  
+     /*
+      *  set parallel level
+      */
+     /* NICK: i tell you that level of parallelism is fixed */
+     parallelism.mode = GLOBUS_FTP_CONTROL_PARALLELISM_FIXED;
+     parallelism.fixed.size = gfp->nsocket_pairs;
+     res = globus_ftp_control_local_parallelism(ftp_handle, &parallelism);
+     test_result(res, "setup_ftp_handle:local_parallelism", __LINE__);
+ 
+     /*
+      *  set tcp buffer size
+      */
+     /* NICK: using cmd line arg to be set window size */
+     tcp_buffer.mode = GLOBUS_FTP_CONTROL_TCPBUFFER_FIXED;
+     tcp_buffer.fixed.size = gfp->tcp_buffsize;
+     res = globus_ftp_control_local_tcp_buffer(ftp_handle, &tcp_buffer);
+     test_result(res, "setup_ftp_handle:tcp buffer", __LINE__);
+ 
+ } /* end setup_ftp_handle() */
+ 
+ static int enable_gridftp_internal(struct gridftp_params *gfp, 
+ 				    int partner_grank)
+ {
+     int proto;
+     struct channel_t *cp;
+     struct tcp_miproto_t *tp;
+     globus_result_t res;
+     struct tcpsendreq *sr;
+     globus_ftp_control_host_port_t              host_port_read;
+     globus_ftp_control_host_port_t              host_port_write;
+ 
+ /* fprintf(stderr, "NICK: %d: enter enable_gridftp_internal(): partner_grank %d\n", MPID_MyWorldRank, partner_grank);  */
+ 
+     /***************************************/
+     /* validating partner_grank proto==TCP */
+     /***************************************/
+ 
+     if (!(cp = get_channel(partner_grank)))
+     {
+ 	globus_libc_fprintf(stderr,
+ 	    "ERROR: enable_gridftp_internal: proc %d: failed get_channel "
+ 	    "grank %d\n",
+ 	    MPID_MyWorldRank, partner_grank);
+ 	print_channels();
+ 	exit(-1);
+     }
+     else if (!(cp->selected_proto))
+     {
+ 	globus_libc_fprintf(stderr,
+ 		    "ERROR: enable_gridftp_internal: proc %d does not have "
+ 		    "selected proto for dest %d\n",
+ 		    MPID_MyWorldRank, partner_grank);
+ 	print_channels();
+ 	exit(-1);
+     }
+     else if ((proto = (cp->selected_proto)->type) != tcp)
+     {
+ 	globus_libc_fprintf(stderr,
+ 		    "ERROR: enable_gridftp_internal: proc %d selected proto "
+ 		    "is not TCP proto for dest %d\n",
+ 		    MPID_MyWorldRank, partner_grank);
+ 	print_channels();
+ 	exit(-1);
+     } /* endif */
+ 
+     tp = (cp->selected_proto)->info;
+ 
+     if (tp->use_grid_ftp)
+     {
+ 	globus_libc_fprintf(stderr,
+ 	    "ERROR: enable_gridftp_internal: proc %d: partner_grank %d: "
+ 	    " tp->use_grid_ftp is already TRUE\n",
+ 	    MPID_MyWorldRank, partner_grank);
+ 	print_channels();
+ 	MPID_Abort(NULL, 0, "MPICH-G2 (internal error)", "mpi_put_attr()");
+     }
+     else if (!(tp->whandle))
+     {
+ 	/* should only have to be done once */
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): partner_grank %d: before prime_the_line\n", MPID_MyWorldRank, partner_grank);  */
+ 	prime_the_line(tp, partner_grank);
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): partner_grank %d: after prime_the_line\n", MPID_MyWorldRank, partner_grank);  */
+ 
+ 	if (!(tp->whandle))
+ 	{
+ 	    globus_libc_fprintf(stderr,
+ 		"ERROR: enable_gridftp_internal: proc %d: partner_grank %d: "
+ 		" after call to prime_the_line tp->whandle is still NULL\n",
+ 		MPID_MyWorldRank, partner_grank);
+ 	    print_channels();
+ 	    MPID_Abort(NULL, 0, "MPICH-G2 (internal error)", "mpi_put_attr()");
+ 	} /* endif */
+     } /* endif */
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): partner_grank %d: we know line is primed\n", MPID_MyWorldRank, partner_grank);  */
+ 
+     /*******************************/
+     /* setting up parallel sockets */
+     /*******************************/
+ 
+     setup_ftp_handle(&(tp->ftp_handle_r), gfp);
+     setup_ftp_handle(&(tp->ftp_handle_w), gfp);
+ 
+     /* START NEWGRIDFTP */
+     /* tp->max_outstanding_writes = gfp->max_outstanding_writes; */
+     tp->gftp_tcp_buffsize = gfp->tcp_buffsize;
+     /* END NEWGRIDFTP */
+ 
+     /*************/
+     /* handshake */
+     /*************/
+ 
+     if (i_establish_socket(partner_grank))
+     {
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): partner_grank %d: handshake: i_estab_sock = TRUE\n", MPID_MyWorldRank, partner_grank);  */
+ 	/* set up a listener for the reader */
+ 	res = globus_io_tcp_get_local_address(tp->whandle,
+ 					      host_port_read.host,
+ 					      &host_port_read.port);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 	host_port_read.port = 0;
+ 	res = globus_ftp_control_local_pasv(&(tp->ftp_handle_r), 
+ 					    &host_port_read);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 
+ 	/* send port number on control channel */
+ 	/* packing header: type=gridftp_port,MPID_MyWorldRank,port */
+ 	g_malloc(sr, struct tcpsendreq *, sizeof(struct tcpsendreq));
+ 	sr->type                   = gridftp_port;
+ 	sr->dest_grank             = partner_grank;
+ 	sr->gridftp_partner_grank  = MPID_MyWorldRank;
+ 	sr->gridftp_port           = (int) host_port_read.port;
+ 	enqueue_tcp_send(sr);
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = TRUE: after enqueue_tcp_send\n", MPID_MyWorldRank);  */
+ 
+ 	/* wait for other side's port to arrive */
+ 	TcpOutstandingRecvReqs ++;
+ 
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = TRUE: TcpOutstandingRecvReqs %d: before tp->recvd_partner_port loop\n", MPID_MyWorldRank, TcpOutstandingRecvReqs); */
+ 	while (tp->recvd_partner_port == GLOBUS_FALSE)
+ 	{
+ 	    /* give all protos that are waiting for something a nudge */
+ 	    MPID_DeviceCheck(MPID_NOTBLOCKING);
+ 	} /* endwhile */
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = TRUE: after tp->recvd_partner_port loop\n", MPID_MyWorldRank); */
+ 
+ 	/* 
+ 	 * I got the TCP message that I was waiting for so 
+ 	 * I decrement TcpOutstandingRecvReqs here.
+ 	 * originally I was decrementing TcpOutstandingRecvReqs in
+ 	 * the read_callback state machine when the message
+ 	 * arrived, but that led to a race condition where
+ 	 * if multiple grid_port messages came in _before_
+ 	 * there were actual requests for them (e.g., many other
+ 	 * sides were requesting parallel sockets before I got
+ 	 * around to calling this function) then the TcpOutstandingRecvReqs
+ 	 * was being decremented far below zero, and as a undesired
+ 	 * result of that, MPID_DeviceCheck would not poll TCP.
+ 	 */
+ 	TcpOutstandingRecvReqs --;
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = TRUE: after decrementing TcpOutstandingsRecvReqs to %d\n", MPID_MyWorldRank, TcpOutstandingRecvReqs);  */
+ 
+ 	/* 
+ 	 * since ftp handle will be listening on same IP as the control 
+ 	 *      socket we may just get the IP address from this socket.
+ 	 */
+ 	res = globus_io_tcp_get_remote_address(tp->whandle,
+ 					      host_port_write.host,
+ 					      &host_port_write.port);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 	host_port_write.port = tp->partner_port;
+ 
+ 	/* tell ftp_control the ip:port of the reader */
+ 	res = globus_ftp_control_local_port(&(tp->ftp_handle_w), 
+ 					    &host_port_write);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+     }
+     else
+     {
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): partner_grank %d: handshake: i_estab_sock = FALSE\n", MPID_MyWorldRank, partner_grank);  */
+ 
+ 	/* set up a listener for the reader */
+ 	res = globus_io_tcp_get_local_address(tp->whandle,
+ 					      host_port_read.host,
+ 					      &host_port_read.port);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 	host_port_read.port = 0;
+ 	res = globus_ftp_control_local_pasv(&(tp->ftp_handle_r), 
+ 					    &host_port_read);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 
+ 	/* wait for other side's port to arrive */
+ 	TcpOutstandingRecvReqs ++;
+ 
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = FALSE: before waitloop\n", MPID_MyWorldRank);  */
+ 	while (tp->recvd_partner_port == GLOBUS_FALSE)
+ 	{
+ 	    /* give all protos that are waiting for something a nudge */
+ 	    MPID_DeviceCheck(MPID_NOTBLOCKING);
+ 	} /* endwhile */
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = FALSE: after waitloop\n", MPID_MyWorldRank);  */
+ 
+ 	/* 
+ 	 * I got the TCP message that I was waiting for so 
+ 	 * I decrement TcpOutstandingRecvReqs here.
+ 	 * originally I was decrementing TcpOutstandingRecvReqs in
+ 	 * the read_callback state machine when the message
+ 	 * arrived, but that led to a race condition where
+ 	 * if multiple grid_port messages came in _before_
+ 	 * there were actual requests for them (e.g., many other
+ 	 * sides were requesting parallel sockets before I got
+ 	 * around to calling this function) then the TcpOutstandingRecvReqs
+ 	 * was being decremented far below zero, and as a undesired
+ 	 * result of that, MPID_DeviceCheck would not poll TCP.
+ 	 */
+ 	TcpOutstandingRecvReqs --;
+ /* fprintf(stderr, "NICK: %d: enable_gridftp_internal(): handshake: i_estab_sock = FALSE: after decrementing TcpOutstandingsRecvReqs to %d\n", MPID_MyWorldRank, TcpOutstandingRecvReqs);  */
+ 
+ 	/* since ftp handle will be listening on same IP as the control 
+ 	 * socket we may just get the IP address from this socket.
+ 	 */
+ 	res = globus_io_tcp_get_remote_address(tp->whandle,
+ 					      host_port_write.host,
+ 					      &host_port_write.port);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 	host_port_write.port = tp->partner_port;
+ 
+ 	/* tell ftp_control the ip:port of the reader */
+ 	res = globus_ftp_control_local_port(&(tp->ftp_handle_w), 
+ 					    &host_port_write);
+ 	test_result(res, "enable_gridftp_internal", __LINE__);
+ 
+ 	/* packing header: type=gridftp_pong,MPID_MyWorldRank,port */
+ 	g_malloc(sr, struct tcpsendreq *, sizeof(struct tcpsendreq));
+ 	sr->type                   = gridftp_port;
+ 	sr->dest_grank             = partner_grank;
+ 	sr->gridftp_partner_grank  = MPID_MyWorldRank;
+ 	sr->gridftp_port           = (int) host_port_read.port;
+ 	enqueue_tcp_send(sr);
+ 
+     } /* endif */
+ 
+     tp->use_grid_ftp = GLOBUS_TRUE;
+     g_ftp_monitor_init(&(tp->read_monitor));
+     g_ftp_monitor_init(&(tp->write_monitor));
+ 
+ /* fprintf(stderr, "NICK: %d: exit enable_gridftp_internal(): partner_grank %d\n", MPID_MyWorldRank, partner_grank);  */
+ 
+     return MPI_SUCCESS;
+ 
+ } /* end enable_gridftp_internal() */
+ 
+ int enable_gridftp(struct MPIR_COMMUNICATOR *comm, void *attr_value)
+ {
+     struct gridftp_params *gfp = (struct gridftp_params *) attr_value;
+     int rc;
+ 
+     if (gfp->partner_rank >= 0 && gfp->partner_rank < comm->np)
+     {
+ 	rc = enable_gridftp_internal(gfp, 
+ 		comm->lrank_to_grank[gfp->partner_rank]);
+     }
+     else
+     {
+ 	/* globus_libc_fprintf(stderr, */
+ 	printf(
+ 	    "ERROR: MPICH-G2: enable_gridftp: MPI_COMM_WORLD rank %d: "
+ 	    "specified partner rank %d for communicator with size %d\n",
+ 	    MPID_MyWorldRank, gfp->partner_rank, comm->np);
+ 	rc = MPI_ERR_INTERN;
+     } /* endif */
+ 
+     return rc;
+ 
+ } /* end enable_gridftp() */
+ 
+ static void gridftp_connect_read_callback(void *callback_arg,
+                                 struct globus_ftp_control_handle_s *handle,
+                                 unsigned int stripe_ndx,
+                                 globus_bool_t resuse,
+                                 globus_object_t *error)
+ {
+     g_ftp_user_args_t *ua = (g_ftp_user_args_t *) callback_arg;
+     globus_result_t                             res;
+ 
+     res = globus_ftp_control_data_read_all(ua->ftp_handle_r,
+                         ua->buffer,
+                         ua->nbytes,
+                         gridftp_read_all_callback,
+                         (void *) ua->monitor);
+     test_result(res, "pr_tcp_g.c:gridftp_connect_read_callback", __LINE__);
+ 
+ } /* end gridftp_connect_read_callback() */
+ 
+ static void gridftp_read_all_callback(void * callback_arg,
+                                 globus_ftp_control_handle_t * handle,
+                                 globus_object_t * error,
+                                 globus_byte_t * buffer,
+                                 globus_size_t length,
+                                 globus_off_t offset,
+                                 globus_bool_t eof)
+ {
+     g_ftp_perf_monitor_t *monitor = (g_ftp_perf_monitor_t *) callback_arg;
+ 
+     if (error != GLOBUS_NULL)
+     {
+         char *errstring = globus_object_printable_to_string(error);
+         printf("ERROR: read_all_callback passed err: %s\n", errstring);
+         assert(GLOBUS_FALSE);
+     } /* endif */
+ 
+     if (eof)
+     {
+ 	monitor->done = GLOBUS_TRUE;
+ 	G2_SIGNAL
+     } /* endif */
+ 
+ } /* end gridftp_read_all_callback() */
+ 
+ /***************/
+ /* END GRIDFTP */
+ /***************/
Index: mpid/globus2/protos.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/protos.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -c -r1.5 -r1.6
*** mpid/globus2/protos.h	2000/04/18 19:36:11	1.5
--- mpid/globus2/protos.h	2003/01/08 12:41:52	1.6
***************
*** 3,8 ****
--- 3,9 ----
  
  #include <globus_common.h>
  #include <globus_io.h>
+ #include <globus_ftp_control.h> /* GRIDFTP */
  
  /*******************/
  /* Data Structures */
Index: mpid/globus2/protos_details.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/protos_details.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -c -r1.12 -r1.13
*** mpid/globus2/protos_details.h	2002/10/15 12:23:17	1.12
--- mpid/globus2/protos_details.h	2003/01/08 12:41:52	1.13
***************
*** 5,11 ****
  /* TCP proto stuff */
  /*******************/
  
! enum header_type {user_data, ack, cancel_send, cancel_result};
  
  /* header =
   * type==user_data,src,tag,contextid,dataoriginbuffsize,ssendflag,packed_flag,
--- 5,12 ----
  /* TCP proto stuff */
  /*******************/
  
! enum header_type {user_data, ack, cancel_send, cancel_result,
! 		    gridftp_port}; /* GRIDFTP */
  
  /* header =
   * type==user_data,src,tag,contextid,dataoriginbuffsize,ssendflag,packed_flag,
***************
*** 52,57 ****
--- 53,60 ----
      void * liba;
      int libasize;
      MPIR_SHANDLE *sreq;
+     int gridftp_port;          /* GRIDFTP */
+     int gridftp_partner_grank; /* GRIDFTP */
  }; 
  
  /* 
***************
*** 90,95 ****
--- 93,115 ----
      unsigned long msg_id_ctr;                               /* message id */
  };
  
+ /* START GRIDFTP */
+ typedef struct g_ftp_perf_monitor_s
+ {
+     globus_bool_t done;
+     int           count;
+ } g_ftp_perf_monitor_t;
+ 
+ typedef struct g_ftp_user_args_s
+ {
+     g_ftp_perf_monitor_t                *monitor;
+     globus_ftp_control_handle_t *       ftp_handle_r;
+     globus_byte_t *                     buffer;
+     int                                 nbytes; /* buffer length */
+     int                                 gftp_tcp_buffsize;
+ } g_ftp_user_args_t;
+ /* END GRIDFTP */
+ 
  struct tcp_miproto_t
  {
      char                            hostname[G2_MAXHOSTNAMELEN];
***************
*** 126,131 ****
--- 146,162 ----
      /* Different levels for TCP: WAN-TCP > LAN-TCP > localhost-TCP */
      char *globus_lan_id;
      int localhost_id;
+ 
+     /* START GRIDFTP */
+     globus_bool_t 		recvd_partner_port;
+     globus_bool_t 		use_grid_ftp;
+     int 			partner_port;
+     int 			gftp_tcp_buffsize;
+     globus_ftp_control_handle_t ftp_handle_r;
+     globus_ftp_control_handle_t ftp_handle_w;
+     g_ftp_perf_monitor_t        read_monitor;
+     g_ftp_perf_monitor_t 	write_monitor;
+     /* END GRIDFTP */
  };
  
  /*******************/
Index: mpid/globus2/recv_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/recv_g.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -c -r1.52 -r1.53
*** mpid/globus2/recv_g.c	2002/12/16 20:59:10	1.52
--- mpid/globus2/recv_g.c	2003/01/09 11:36:06	1.53
***************
*** 722,728 ****
  		globus_libc_fprintf(
  		    stderr,
  		    "ERROR: send_ack_over_tcp: deteremined that Headerlen "
! 		    "(%ld) - sizeof(int) (%ld) < waiter for ack's libasize %d"
  		    " and will therefore not fit into header\n", 
  		    Headerlen, 
  		    globus_dc_sizeof_int(1), 
--- 722,728 ----
  		globus_libc_fprintf(
  		    stderr,
  		    "ERROR: send_ack_over_tcp: deteremined that Headerlen "
! 		    "(%d) - sizeof(int) (%ld) < waiter for ack's libasize %d"
  		    " and will therefore not fit into header\n", 
  		    Headerlen, 
  		    globus_dc_sizeof_int(1), 
***************
*** 990,996 ****
   */
  int mpi_recv_or_post(MPIR_RHANDLE *in_req, int *error_code)
  {
-     int rc;
      int err;
      int flag;
  
--- 990,995 ----
Index: mpid/globus2/send_g.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/send_g.c,v
retrieving revision 1.54
retrieving revision 1.56
diff -c -r1.54 -r1.56
*** mpid/globus2/send_g.c	2002/12/16 20:59:10	1.54
--- mpid/globus2/send_g.c	2003/01/09 11:36:06	1.56
***************
*** 20,25 ****
--- 20,41 ----
  			    globus_result_t result, 
  			    globus_byte_t *buff, 
  			    globus_size_t nbytes);
+ /* START GRIDFTP */
+ static void gridftp_setup_sockets_callback(void *callback_arg,
+                                 struct globus_ftp_control_handle_s *handle,
+                                 unsigned int stripe_ndx,
+                                 globus_bool_t reuse,
+                                 globus_object_t *error);
+ static void gridftp_write_callback(void *callback_arg,
+                                     globus_ftp_control_handle_t *handle,
+                                     globus_object_t *error,
+                                     globus_byte_t *buffer,
+                                     globus_size_t length,
+                                     globus_off_t offset,
+                                     globus_bool_t eof);
+ void g_ftp_monitor_init(g_ftp_perf_monitor_t *monitor);
+ void g_ftp_monitor_reset(g_ftp_perf_monitor_t *monitor);
+ /* END GRIDFTP */
  static void remove_and_continue(struct tcpsendreq *sr);
  static void free_and_mark_sreq(struct tcpsendreq *sr, globus_bool_t data_sent);
  static void send_datatype(struct MPIR_COMMUNICATOR *comm,
***************
*** 186,192 ****
          *error_code = MPI_ERR_INTERN;
      } /* endif */
  
!   /* fn_exit: */
      DEBUG_FN_EXIT(DEBUG_MODULE_SEND);
  } /* end MPID_SendDatatype() */
  
--- 202,210 ----
          *error_code = MPI_ERR_INTERN;
      } /* endif */
  
! #if defined(VMPI)
!   fn_exit:
! #endif
      DEBUG_FN_EXIT(DEBUG_MODULE_SEND);
  } /* end MPID_SendDatatype() */
  
***************
*** 476,482 ****
          *error_code = MPI_ERR_INTERN;
      } /* endif */
  
!   /* fn_exit: */
      DEBUG_FN_EXIT(DEBUG_MODULE_SEND);
  } /* end MPID_SsendDatatype() */
  
--- 494,502 ----
          *error_code = MPI_ERR_INTERN;
      } /* endif */
  
! #if defined(VMPI)
!   fn_exit:
! #endif
      DEBUG_FN_EXIT(DEBUG_MODULE_SEND);
  } /* end MPID_SsendDatatype() */
  
***************
*** 681,687 ****
  	if (sreq->req_src_proto == mpi)
  	{
  	    MPI_Status status;
- 	    struct mpircvreq * recvreq;
  	    
  	    /* normally relaxed RC semantics would require a lock here to
                 acquire the shared sreq data, but we already did an acquire
--- 701,706 ----
***************
*** 1404,1409 ****
--- 1423,1480 ----
  		    break;
  		} /* end switch() */
  
+                 /* START GRIDFTP */
+                 if (tp->use_grid_ftp)
+                 {
+                     g_ftp_user_args_t ua;
+                     globus_result_t res;
+ 
+                     g_ftp_monitor_reset(&(tp->write_monitor));
+ 
+                     ua.monitor                = &(tp->write_monitor);
+                     ua.buffer                 = sr->src;
+                     ua.nbytes                 = bufflen;
+                     /* START NEWGRIDFTP */
+                     /* ua.max_outstanding_writes = tp->max_outstanding_writes; */
+                     ua.gftp_tcp_buffsize = tp->gftp_tcp_buffsize;
+                     /* END NEWGRIDFTP */
+                     /****************/
+                     /* WRITE BUFFER */
+                     /****************/
+ 
+                     /*
+                      * this can be used over and over again ...
+                      * it simply opens connections and deploys callback when
+                      * ready to go
+                      */
+                     res = globus_ftp_control_data_connect_write(
+                             &(tp->ftp_handle_w),
+                             gridftp_setup_sockets_callback,
+                             &ua);
+                     if (res != GLOBUS_SUCCESS)
+                     {
+                         globus_libc_fprintf(
+                             stderr,
+                             "ERROR: start_tcp_send: "
+                             "register gridftp write payload %d failed\n",
+                             bufflen);
+                         remove_and_continue(sr);
+                         free_and_mark_sreq(sr, GLOBUS_FALSE);
+                         rc = -1;
+                         goto fn_exit;
+                     } /* endif */
+ 
+ 		    while (!(tp->write_monitor.done))
+ 		    {
+ 			G2_WAIT
+ 		    } /* endwhile */
+ 
+                     remove_and_continue(sr);
+                     free_and_mark_sreq(sr, GLOBUS_TRUE);
+                 }
+                 else
+                 /* END GRIDFTP */
+ 
  		if (globus_io_register_write(tp->whandle, 
  					     sr->src, 
  					     (globus_size_t) bufflen, 
***************
*** 1434,1439 ****
--- 1505,1539 ----
  	} /* esac user_data */
        break;
  
+       /* START GRIDFTP */
+       case gridftp_port:
+         {
+             globus_result_t rc2;
+ 
+             globus_dc_put_int(&cp, &sr->type,                    1);
+             globus_dc_put_int(&cp, &sr->gridftp_partner_grank,   1);
+             globus_dc_put_int(&cp, &sr->gridftp_port,            1);
+ 
+             /* sending header */
+             rc2 = globus_io_write(
+                     &(((struct tcp_rw_handle_t *)(tp->handlep))->handle),
+                     tp->header,
+                     Headerlen,
+                     &nbytes_sent);
+             remove_and_continue(sr);
+             g_free(sr);
+ 
+             if (rc2 != GLOBUS_SUCCESS)
+             {
+                 globus_libc_fprintf(stderr,
+                     "ERROR: send_ack_over_tcp: write header failed\n");
+                 rc = -1;
+                 goto fn_exit;
+             } /* endif */
+         }
+       break;
+       /* END GRIDFTP */
+ 
        case cancel_send: break; /* here only to get rid of 
                                    annoying compiler warning */
        
***************
*** 1490,1495 ****
--- 1590,1699 ----
      free_and_mark_sreq(sr, GLOBUS_TRUE);
  
  } /* end write_callback */
+ 
+ /* START GRIDFTP */
+ /*
+  * this gets called when sockets are all setup and 
+  * you're ready to start writing.
+  */
+ static void gridftp_setup_sockets_callback(void *callback_arg,
+                                 struct globus_ftp_control_handle_s *handle,
+                                 unsigned int stripe_ndx,
+                                 globus_bool_t reuse,
+                                 globus_object_t *error)
+ {
+     g_ftp_perf_monitor_t                        monitor;
+     int                                         nsent;
+     globus_bool_t                               eof;
+     globus_result_t                             res;
+     g_ftp_user_args_t *ua = (g_ftp_user_args_t *) callback_arg;
+     g_ftp_perf_monitor_t *done_monitor = ua->monitor;
+     globus_byte_t *next_write_start;
+     int bytes_per_write;
+ 
+     g_ftp_monitor_init(&monitor);
+  
+ /* START NEWGRIDFTP */
+ #if 0
+     if ((bytes_per_write = ua->nbytes/ua->max_outstanding_writes) < 1)
+         bytes_per_write = 1;
+ #else
+     bytes_per_write = ua->gftp_tcp_buffsize;
+ #endif 
+ /* END NEWGRIDFTP */
+ 
+     nsent = 0;
+     next_write_start = ua->buffer;
+     eof = GLOBUS_FALSE;
+     while (!eof)
+     {
+         if (nsent + bytes_per_write >= ua->nbytes)
+         {
+             eof = GLOBUS_TRUE;
+             bytes_per_write = ua->nbytes - nsent;
+         } /* endif */
+ 
+         res = globus_ftp_control_data_write(handle, /* same ftp_handle */
+                                   next_write_start,    /* buff */
+                                   bytes_per_write,     /* buffsize */
+                                   nsent,               /* offset into payload */
+                                   eof,                 /* flag */
+                                   gridftp_write_callback,
+                                   (void *) &monitor);  /* user arg */
+         /* test_result(res, "connect_write_callback:data_write", __LINE__); */
+ 
+         next_write_start += bytes_per_write;
+         nsent += bytes_per_write;
+         monitor.count++;
+     } /* endwhile */
+ 
+     /* wait for all the callbacks to return */
+     while(monitor.count != 0)
+     {
+ 	G2_WAIT
+     } /* endwhile */
+ 
+     /* signalling that write of entire payload is complete */
+     done_monitor->done = GLOBUS_TRUE;
+     G2_SIGNAL
+ 
+ } /* end gridftp_setup_sockets_callback() */
+ 
+ static void gridftp_write_callback(void *callback_arg,
+                                     globus_ftp_control_handle_t *handle,
+                                     globus_object_t *error,
+                                     globus_byte_t *buffer,
+                                     globus_size_t length,
+                                     globus_off_t offset,
+                                     globus_bool_t eof)
+ {
+     g_ftp_perf_monitor_t *                   monitor;
+ 
+     monitor = (g_ftp_perf_monitor_t *)callback_arg;
+ 
+     if(error != GLOBUS_NULL)
+     {
+         assert(GLOBUS_FALSE);
+     } /* endif */
+ 
+     monitor->count--;
+     G2_SIGNAL
+ 
+ } /* end gridftp_write_callback() */
+ 
+ void g_ftp_monitor_init(g_ftp_perf_monitor_t *monitor)
+ {
+     g_ftp_monitor_reset(monitor);
+ } /* end g_ftp_monitor_init() */
+ 
+ void g_ftp_monitor_reset(g_ftp_perf_monitor_t *monitor)
+ {
+     monitor->done = GLOBUS_FALSE;
+     monitor->count = 0;
+ } /* end g_ftp_monitor_reset() */
+ 
+ /* END GRIDFTP */
+ 
  
  /*
   * it is assumed that upon entrance to this function:
Index: mpid/globus2/setup_globus2
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/globus2/setup_globus2,v
retrieving revision 1.42
retrieving revision 1.43
diff -c -r1.42 -r1.43
*** mpid/globus2/setup_globus2	2002/10/15 13:09:59	1.42
--- mpid/globus2/setup_globus2	2003/01/08 12:41:53	1.43
***************
*** 190,196 ****
      fi
      $gmh -flavor=$flavor \
  	globus_common globus_gram_client globus_io globus_data_conversion \
! 	globus_duroc_runtime globus_duroc_bootstrap >mpid/${DEVICE}/Makefile.mpich.header
      if test $? != 0 ; then
  	print_error "ERROR: failed globus-makefile-header: missing Globus components"
  	cat mpid/${DEVICE}/Makefile.mpich.header
--- 190,197 ----
      fi
      $gmh -flavor=$flavor \
  	globus_common globus_gram_client globus_io globus_data_conversion \
! 	globus_duroc_runtime globus_duroc_bootstrap globus_ftp_control \
! 	>mpid/${DEVICE}/Makefile.mpich.header
      if test $? != 0 ; then
  	print_error "ERROR: failed globus-makefile-header: missing Globus components"
  	cat mpid/${DEVICE}/Makefile.mpich.header
Index: mpid/mpd/Makefile.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/mpd/Makefile.in,v
retrieving revision 1.47
retrieving revision 1.49
diff -c -r1.47 -r1.49
*** mpid/mpd/Makefile.in	2002/01/18 18:02:15	1.47
--- mpid/mpd/Makefile.in	2003/01/13 17:26:02	1.49
***************
*** 122,157 ****
  # Installation target
  # This installation target isn't ready yet; it needs to be more careful
  # of modes (particularly setting a+x)
  install:
  # startdaemons at least temporarily obsolete      
  #	sed -e "s/^DIR=.*$/DIR=${bindir}/g" ${top_srcdir}/mpid/mpd/startdaemons.in ${bindir}/startdaemons
! #	chmod ${XMODE} ${bindir}/startdaemons
! 	if [ ! -d ${bindir} ] ; then \
! 	    mkdir -p ${bindir} ;\
  	fi   
! 	cp -f mpd ${bindir}/mpd
! 	cp -f mpdcon ${bindir}/mpdcon
  	@if [ "`whoami`" = "root" ] ; then \
! 	    echo "chmod 4755 ${bindir}/mpdcon" ;\
! 	    chmod 4755 ${bindir}/mpdcon ;\
  	fi
! 	cp -f mpdman ${bindir}/mpdman
  #	if [ -f startdaemons -a mpd.hosts ] ; then \
! #	    cp startdaemons ${bindir}/startdaemons ;\
! #	    cp mpd.hosts ${bindir}/mpd.hosts ;\
  #	fi
  	-@for cmd in ${CMDS_FROM_CON} ; do \
! 	    rm -f ${bindir}/$$cmd ; \
! 	    @LN_S@ -f ${bindir}/mpdcon ${bindir}/$$cmd ; done
  #  Some other part of mpich install might have created an mpirun
! 	/bin/rm -f ${bindir}/mpirun
! 	@LN_S@ -f ${bindir}/mpdcon ${bindir}/mpirun
  	-@if [ -n "${UNINSTALLFILE}" ] ; then \
  	    for file in mpd mpdcon mpdman mpdtrace mpddump mpdexit mpirun \
  	        mpdallexit mpdbomb mpdhelp mpdcleanup mpdmpexec \
  	        mpdclean \
  		mpigdb mpdmandump mpdlistjobs mpdkilljob mpdringtest mpdringsize mpdshutdown; do \
! 	        echo "/bin/rm -f ${bindir}/$$file" >> "${UNINSTALLFILE}" ; \
  	    done ; \
  	fi
  #
--- 122,159 ----
  # Installation target
  # This installation target isn't ready yet; it needs to be more careful
  # of modes (particularly setting a+x)
+ # Note that it uses relative paths for the symlinks.  This is cleaner
+ # and works with RPM
  install:
  # startdaemons at least temporarily obsolete      
  #	sed -e "s/^DIR=.*$/DIR=${bindir}/g" ${top_srcdir}/mpid/mpd/startdaemons.in ${bindir}/startdaemons
! #	chmod ${XMODE} ${DESTDIR}${bindir}/startdaemons
! 	if [ ! -d ${DESTDIR}${bindir} ] ; then \
! 	    mkdir -p ${DESTDIR}${bindir} ;\
  	fi   
! 	cp -f mpd ${DESTDIR}${bindir}/mpd
! 	cp -f mpdcon ${DESTDIR}${bindir}/mpdcon
  	@if [ "`whoami`" = "root" ] ; then \
! 	    echo "chmod 4755 ${DESTDIR}${bindir}/mpdcon" ;\
! 	    chmod 4755 ${DESTDIR}${bindir}/mpdcon ;\
  	fi
! 	cp -f mpdman ${DESTDIR}${bindir}/mpdman
  #	if [ -f startdaemons -a mpd.hosts ] ; then \
! #	    cp startdaemons ${DESTDIR}${bindir}/startdaemons ;\
! #	    cp mpd.hosts ${DESTDIR}${bindir}/mpd.hosts ;\
  #	fi
  	-@for cmd in ${CMDS_FROM_CON} ; do \
! 	    rm -f ${DESTDIR}${bindir}/$$cmd ; \
! 	    (cd ${DESTDIR}${bindir} && @LN_S@ -f mpdcon $$cmd ); done
  #  Some other part of mpich install might have created an mpirun
! 	/bin/rm -f ${DESTDIR}${bindir}/mpirun
! 	(cd ${DESTDIR}${bindir} && @LN_S@ -f mpdcon mpirun )
  	-@if [ -n "${UNINSTALLFILE}" ] ; then \
  	    for file in mpd mpdcon mpdman mpdtrace mpddump mpdexit mpirun \
  	        mpdallexit mpdbomb mpdhelp mpdcleanup mpdmpexec \
  	        mpdclean \
  		mpigdb mpdmandump mpdlistjobs mpdkilljob mpdringtest mpdringsize mpdshutdown; do \
! 	        echo "/bin/rm -f ${DESTDIR}${bindir}/$$file" >> "${UNINSTALLFILE}" ; \
  	    done ; \
  	fi
  #
Index: mpid/nt_server/winmpd/mpd/launch.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpd/launch.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -c -r1.24 -r1.25
*** mpid/nt_server/winmpd/mpd/launch.cpp	2002/12/10 22:10:35	1.24
--- mpid/nt_server/winmpd/mpd/launch.cpp	2003/01/09 23:17:40	1.25
***************
*** 31,36 ****
--- 31,37 ----
      bool bUseDebugFlag;
      int priorityClass;
      int priority;
+     bool bAttachToWorkstation;
  
      int nPid;
      int nKRank;
***************
*** 60,65 ****
--- 61,67 ----
      bUseDebugFlag = false;
      priorityClass = BELOW_NORMAL_PRIORITY_CLASS;
      priority = THREAD_PRIORITY_NORMAL;
+     bAttachToWorkstation = false;
  
      nPid = -1;
      nKRank = 0;
***************
*** 382,392 ****
      bool bProcessAborted = false;
      SYSTEMTIME stime;
      char timestamp[256];
  
      pArg->Print();
  
-     HANDLE hIn, hOut, hErr;
-     int nError;
      if (strlen(pArg->pszEnv))
      {
  	sprintf(pszStr, "|MPD_ID=%s", pArg->pszSrcId);
--- 384,394 ----
      bool bProcessAborted = false;
      SYSTEMTIME stime;
      char timestamp[256];
+     HANDLE hIn, hOut, hErr;
+     int nError;
  
      pArg->Print();
  
      if (strlen(pArg->pszEnv))
      {
  	sprintf(pszStr, "|MPD_ID=%s", pArg->pszSrcId);
Index: mpid/nt_server/winmpd/mpd/launchprocess.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpd/launchprocess.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -c -r1.11 -r1.12
*** mpid/nt_server/winmpd/mpd/launchprocess.cpp	2002/12/05 22:37:13	1.11
--- mpid/nt_server/winmpd/mpd/launchprocess.cpp	2003/01/09 23:17:40	1.12
***************
*** 179,184 ****
--- 179,224 ----
      return hUser;
  }
  
+ HANDLE GetUserHandleNoCache(char *account, char *domain, char *password, int *pError)
+ {
+     HANDLE hUser;
+     int error;
+     int num_tries = 3;
+ 
+     // logon the user
+     while (!LogonUser(
+ 	account,
+ 	domain, 
+ 	password,
+ 	LOGON32_LOGON_INTERACTIVE, 
+ 	LOGON32_PROVIDER_DEFAULT, 
+ 	&hUser))
+     {
+ 	error = GetLastError();
+ 	if (error == ERROR_NO_LOGON_SERVERS)
+ 	{
+ 	    if (num_tries)
+ 		Sleep(250);
+ 	    else
+ 	    {
+ 		*pError = error;
+ 		return INVALID_HANDLE_VALUE;
+ 	    }
+ 	    num_tries--;
+ 	}
+ 	else
+ 	{
+ 	    *pError = error;
+ 	    return INVALID_HANDLE_VALUE;
+ 	}
+     }
+ 
+     // cache the user handle
+     CacheUserHandle(account, domain, password, hUser);
+ 
+     return hUser;
+ }
+ 
  // Function name	: SetEnvironmentVariables
  // Description	    : 
  // Return type		: void 
***************
*** 368,373 ****
--- 408,415 ----
      saInfo.hStdInput = hPipeStdinR;
      saInfo.hStdOutput = hPipeStdoutW;
      saInfo.dwFlags = STARTF_USESTDHANDLES;
+     //saInfo.lpDesktop = "WinSta0\\Default";
+     //saInfo.wShowWindow = SW_SHOW;
      
      SetEnvironmentVariables(env);
      pEnv = GetEnvironmentStrings();
***************
*** 456,462 ****
      }
  }
  
! bool ValidateUser(char *pszAccount, char *pszPassword, int *pError)
  {
      HANDLE hUser;
      char account[100], domain[100] = "", *pszDomain;
--- 498,504 ----
      }
  }
  
! bool ValidateUser(char *pszAccount, char *pszPassword, bool bUseCache, int *pError)
  {
      HANDLE hUser;
      char account[100], domain[100] = "", *pszDomain;
***************
*** 467,476 ****
      else
  	pszDomain = domain;
  
!     hUser = GetUserHandle(account, pszDomain, pszPassword, pError);
      return (hUser != INVALID_HANDLE_VALUE);
  }
  
  HANDLE LaunchProcessLogon(char *domainaccount, char *password, char *cmd, char *env, char *map, char *dir, int priorityClass, int priority, HANDLE *hIn, HANDLE *hOut, HANDLE *hErr, int *pdwPid, int *nError, char *pszError, bool bDebug)
  {
      HANDLE hStdin, hStdout, hStderr;
--- 509,588 ----
      else
  	pszDomain = domain;
  
!     if (bUseCache)
! 	hUser = GetUserHandle(account, pszDomain, pszPassword, pError);
!     else
! 	hUser = GetUserHandleNoCache(account, pszDomain, pszPassword, pError);
! 
!     // does hUser need to be closed?
! 
      return (hUser != INVALID_HANDLE_VALUE);
  }
  
+ //#define USE_WINDOW_STATIONS
+ #undef USE_WINDOW_STATIONS
+ 
+ #ifdef USE_WINDOW_STATIONS
+ 
+ // Insert code here to figure out a way to launch a process in the interactive WorkStation and Desktop
+ 
+ HWINSTA hwinstaSave = NULL;
+ HDESK hdeskSave = NULL;
+ HWINSTA hwinstaUser = NULL;
+ HDESK hdeskUser = NULL;
+ 
+ bool AttachToWorkstation()
+ {
+     DWORD dwThreadId;
+  
+     // Ensure connection to service window station and desktop, and 
+     // save their handles. 
+ 
+     hwinstaSave = GetProcessWindowStation(); 
+     dwThreadId = GetCurrentThreadId(); 
+     hdeskSave = GetThreadDesktop(dwThreadId); 
+  
+     // connect to the User's window station and desktop. 
+ 
+     //RpcImpersonateClient(h); 
+     hwinstaUser = OpenWindowStation("WinSta0", TRUE, MAXIMUM_ALLOWED); 
+     if (hwinstaUser == NULL) 
+     { 
+         //RpcRevertToSelf();
+ 	err_printf("AttachToWorkstation:OpenWindowStation failed, error %d.\n", GetLastError());
+         return false; 
+     } 
+     SetProcessWindowStation(hwinstaUser); 
+     hdeskUser = OpenInputDesktop(DF_ALLOWOTHERACCOUNTHOOK, TRUE, MAXIMUM_ALLOWED); 
+     /*
+ 	DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE |
+ 	DESKTOP_HOOKCONTROL | DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD |
+ 	DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS);
+ 	*/
+     //RpcRevertToSelf(); 
+     if (hdeskUser == NULL) 
+     { 
+         SetProcessWindowStation(hwinstaSave); 
+         CloseWindowStation(hwinstaUser);
+ 	err_printf("AttachToWorkstation:OpenInputDesktop failed, error %d\n", GetLastError());
+         return false;
+     } 
+     SetThreadDesktop(hdeskUser);
+ 
+     return true;
+ }
+ 
+ bool DetachFromWorkstation()
+ {
+     // Restore window station and desktop. 
+     SetThreadDesktop(hdeskSave); 
+     SetProcessWindowStation(hwinstaSave); 
+     CloseDesktop(hdeskUser); 
+     CloseWindowStation(hwinstaUser); 
+     return true;
+ }
+ #endif /* USE_WINDOW_STATIONS */
+ 
  HANDLE LaunchProcessLogon(char *domainaccount, char *password, char *cmd, char *env, char *map, char *dir, int priorityClass, int priority, HANDLE *hIn, HANDLE *hOut, HANDLE *hErr, int *pdwPid, int *nError, char *pszError, bool bDebug)
  {
      HANDLE hStdin, hStdout, hStderr;
***************
*** 602,607 ****
--- 714,721 ----
      saInfo.hStdOutput = hPipeStdoutW;
      saInfo.hStdError  = hPipeStderrW;
      saInfo.dwFlags    = STARTF_USESTDHANDLES;
+     //saInfo.lpDesktop = "WinSta0\\Default";
+     //saInfo.wShowWindow = SW_SHOW;
      
      SetEnvironmentVariables(env);
      pEnv = GetEnvironmentStrings();
***************
*** 645,651 ****
  	    CREATE_SUSPENDED | CREATE_NO_WINDOW | priorityClass;
  	if (bDebug)
  	    launch_flag = launch_flag | DEBUG_PROCESS;
! 	
  	num_tries = 4;
  	do
  	{
--- 759,769 ----
  	    CREATE_SUSPENDED | CREATE_NO_WINDOW | priorityClass;
  	if (bDebug)
  	    launch_flag = launch_flag | DEBUG_PROCESS;
! 
! #ifdef USE_WINDOW_STATIONS
! 	AttachToWorkstation();
! #endif
! 
  	num_tries = 4;
  	do
  	{
***************
*** 689,694 ****
--- 807,815 ----
  	    }
  	} while (num_tries);
  	//RevertToSelf(); // If you call RevertToSelf, the network mapping goes away.
+ #ifdef USE_WINDOW_STATIONS
+ 	DetachFromWorkstation();
+ #endif
      }
      else
      {
Index: mpid/nt_server/winmpd/mpd/mpd.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpd/mpd.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -c -r1.9 -r1.10
*** mpid/nt_server/winmpd/mpd/mpd.h	2002/06/25 17:53:44	1.9
--- mpid/nt_server/winmpd/mpd/mpd.h	2003/01/08 22:23:04	1.10
***************
*** 4,10 ****
  #define COPYRIGHT "Copyright 2002 Argonne National Lab"
  #define VERSION_RELEASE 1
  #define VERSION_MAJOR   2
! #define VERSION_MINOR   4
  
  #define MAX_CMD_LENGTH	    8192
  #define MAX_HOST_LENGTH	    64
--- 4,10 ----
  #define COPYRIGHT "Copyright 2002 Argonne National Lab"
  #define VERSION_RELEASE 1
  #define VERSION_MAJOR   2
! #define VERSION_MINOR   5
  
  #define MAX_CMD_LENGTH	    8192
  #define MAX_HOST_LENGTH	    64
***************
*** 24,30 ****
  
  #define CONSOLE_STR_LENGTH 10*MAX_CMD_LENGTH
  
! #define MPD_DEFAULT_TIMEOUT 30
! #define MPD_SHORT_TIMEOUT   10
  
  #endif
--- 24,30 ----
  
  #define CONSOLE_STR_LENGTH 10*MAX_CMD_LENGTH
  
! #define MPD_DEFAULT_TIMEOUT 45
! #define MPD_SHORT_TIMEOUT   20
  
  #endif
Index: mpid/nt_server/winmpd/mpd/mpdconsole.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpd/mpdconsole.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -c -r1.23 -r1.24
*** mpid/nt_server/winmpd/mpd/mpdconsole.cpp	2002/12/10 22:10:36	1.23
--- mpid/nt_server/winmpd/mpd/mpdconsole.cpp	2003/01/09 23:17:40	1.24
***************
*** 1373,1379 ****
  	}
  	else if (strnicmp(p->pszIn, "validate ", 9) == 0)
  	{
! 	    char pszAccount[100], pszPassword[300];
  	    int error;
  	    _snprintf(pszStr, MAX_CMD_LENGTH, "FAIL - invalid arguments");
  	    if (GetStringOpt(&p->pszIn[9], "a", pszAccount))
--- 1373,1380 ----
  	}
  	else if (strnicmp(p->pszIn, "validate ", 9) == 0)
  	{
! 	    char pszAccount[100], pszPassword[300], pszCache[10];
! 	    bool bUseCache = true;
  	    int error;
  	    _snprintf(pszStr, MAX_CMD_LENGTH, "FAIL - invalid arguments");
  	    if (GetStringOpt(&p->pszIn[9], "a", pszAccount))
***************
*** 1381,1387 ****
  		if (GetStringOpt(&p->pszIn[9], "p", pszPassword))
  		{
  		    DecodePassword(pszPassword);
! 		    if (ValidateUser(pszAccount, pszPassword, &error))
  		    {
  			_snprintf(pszStr, MAX_CMD_LENGTH, "SUCCESS");
  		    }
--- 1382,1393 ----
  		if (GetStringOpt(&p->pszIn[9], "p", pszPassword))
  		{
  		    DecodePassword(pszPassword);
! 		    if (GetStringOpt(&p->pszIn[9], "c", pszCache))
! 		    {
! 			if (stricmp(pszCache, "no") == 0)
! 			    bUseCache = false;
! 		    }
! 		    if (ValidateUser(pszAccount, pszPassword, bUseCache, &error))
  		    {
  			_snprintf(pszStr, MAX_CMD_LENGTH, "SUCCESS");
  		    }
Index: mpid/nt_server/winmpd/mpd/mpdimpl.h
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpd/mpdimpl.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -c -r1.23 -r1.24
*** mpid/nt_server/winmpd/mpd/mpdimpl.h	2002/12/10 22:10:36	1.23
--- mpid/nt_server/winmpd/mpd/mpdimpl.h	2003/01/09 23:17:41	1.24
***************
*** 208,214 ****
  void UpdateMPICHd(char *pszFileName);
  void ConcatenateProcessesToString(char *pszStr);
  void GetNameKeyValue(char *str, char *name, char *key, char *value);
! bool ValidateUser(char *pszAccount, char *pszPassword, int *pError);
  HANDLE LaunchProcess(char *cmd, char *env, char *dir, int priorityClass, int priority, HANDLE *hIn, HANDLE *hOut, HANDLE *hErr, int *pdwPid, int *nError, char *pszError, bool bDebug);
  HANDLE LaunchProcessLogon(char *domainaccount, char *password, char *cmd, char *env, char *map, char *dir, int priorityClass, int priority, HANDLE *hIn, HANDLE *hOut, HANDLE *hErr, int *pdwPid, int *nError, char *pszError, bool bDebug);
  void DebugWaitForProcess(bool &bAborted, char *pszError);
--- 208,214 ----
  void UpdateMPICHd(char *pszFileName);
  void ConcatenateProcessesToString(char *pszStr);
  void GetNameKeyValue(char *str, char *name, char *key, char *value);
! bool ValidateUser(char *pszAccount, char *pszPassword, bool bUseCache, int *pError);
  HANDLE LaunchProcess(char *cmd, char *env, char *dir, int priorityClass, int priority, HANDLE *hIn, HANDLE *hOut, HANDLE *hErr, int *pdwPid, int *nError, char *pszError, bool bDebug);
  HANDLE LaunchProcessLogon(char *domainaccount, char *password, char *cmd, char *env, char *map, char *dir, int priorityClass, int priority, HANDLE *hIn, HANDLE *hOut, HANDLE *hErr, int *pdwPid, int *nError, char *pszError, bool bDebug);
  void DebugWaitForProcess(bool &bAborted, char *pszError);
Index: mpid/nt_server/winmpd/mpd/updatempich.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpd/updatempich.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** mpid/nt_server/winmpd/mpd/updatempich.cpp	2002/04/08 23:17:38	1.1
--- mpid/nt_server/winmpd/mpd/updatempich.cpp	2003/01/08 22:23:05	1.2
***************
*** 14,19 ****
--- 14,30 ----
  
      if (len == 0)
      {
+ 	if (GetSystemWindowsDirectory(pszStr, 4096))
+ 	{
+ 	    strcat(pszStr, "\\system32\\mpich.dll");
+ 	    if (!MoveFileEx(pszFileName, pszStr, MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING))
+ 	    {
+ 		error = GetLastError();
+ 		Translate_Error(error, pszStr);
+ 		err_printf("Unable to move '%s' to '%s'\nError: %s\n", pszFileName, filename, pszStr);
+ 		return;
+ 	    }
+ 	}
  	err_printf("unable to find mpich.dll\n");
  	return;
      }
***************
*** 50,55 ****
--- 61,77 ----
  
      if (len == 0)
      {
+ 	if (GetSystemWindowsDirectory(pszStr, 4096))
+ 	{
+ 	    strcat(pszStr, "\\system32\\mpichd.dll");
+ 	    if (!MoveFileEx(pszFileName, pszStr, MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING))
+ 	    {
+ 		error = GetLastError();
+ 		Translate_Error(error, pszStr);
+ 		err_printf("Unable to move '%s' to '%s'\nError: %s\n", pszFileName, filename, pszStr);
+ 		return;
+ 	    }
+ 	}
  	err_printf("unable to find mpichd.dll\n");
  	return;
      }
Index: mpid/nt_server/winmpd/mpich1/MPIRegister/MPIRegister.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpich1/MPIRegister/MPIRegister.cpp,v
retrieving revision 1.6
retrieving revision 1.9
diff -c -r1.6 -r1.9
*** mpid/nt_server/winmpd/mpich1/MPIRegister/MPIRegister.cpp	2002/10/25 21:54:48	1.6
--- mpid/nt_server/winmpd/mpich1/MPIRegister/MPIRegister.cpp	2003/01/10 18:22:27	1.9
***************
*** 26,47 ****
  	int nPort = MPD_DEFAULT_PORT;
  	SOCKET sock;
  	int error;
  
  	if ((argc > 1) && (stricmp(argv[1], "-remove") == 0))
  	{
  		if (DeleteCurrentPasswordRegistryEntry())
  			printf("Account and password removed from the Registry.\n");
  		else
  			printf("Error: Unable to remove the encrypted password.\n");
  		return;
  	}
  
! 	if ((argc > 1) && (stricmp(argv[1], "-validate") == 0))
  	{
  	    if (SetupCryptoClient())
  	    {
  		if (ReadPasswordFromRegistry(account, password))
  		{
  		    if (!GetOpt(argc, argv, "-host", pszHost))
  		    {
  			DWORD len = 100;
--- 26,53 ----
  	int nPort = MPD_DEFAULT_PORT;
  	SOCKET sock;
  	int error;
+ 	bool bUseCache = true;
  
  	if ((argc > 1) && (stricmp(argv[1], "-remove") == 0))
  	{
  		if (DeleteCurrentPasswordRegistryEntry())
+ 		{
+ 			DeleteCachedPassword();
  			printf("Account and password removed from the Registry.\n");
+ 		}
  		else
  			printf("Error: Unable to remove the encrypted password.\n");
  		return;
  	}
  
! 	if (GetOpt(argc, argv, "-validate"))
  	{
  	    if (SetupCryptoClient())
  	    {
  		if (ReadPasswordFromRegistry(account, password))
  		{
+ 		    if (GetOpt(argc, argv, "-nocache"))
+ 			bUseCache = false;
  		    if (!GetOpt(argc, argv, "-host", pszHost))
  		    {
  			DWORD len = 100;
***************
*** 54,60 ****
  		    if ((error = ConnectToMPD(pszHost, nPort, pszPassPhrase, &sock)) == 0)
  		    {
  			pszEncoded = EncodePassword(password);
! 			sprintf(pszStr, "validate a=%s p=%s", account, pszEncoded);
  			WriteString(sock, pszStr);
  			strcpy(pszStr, "FAIL");
  			ReadStringTimeout(sock, pszStr, 20);
--- 60,66 ----
  		    if ((error = ConnectToMPD(pszHost, nPort, pszPassPhrase, &sock)) == 0)
  		    {
  			pszEncoded = EncodePassword(password);
! 			sprintf(pszStr, "validate a=%s p=%s c=%s", account, pszEncoded, bUseCache ? "yes" : "no");
  			WriteString(sock, pszStr);
  			strcpy(pszStr, "FAIL");
  			ReadStringTimeout(sock, pszStr, 20);
Index: mpid/nt_server/winmpd/mpich1/MPIRun/LaunchProcess.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpich1/MPIRun/LaunchProcess.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -c -r1.20 -r1.21
*** mpid/nt_server/winmpd/mpich1/MPIRun/LaunchProcess.cpp	2002/12/17 20:54:28	1.20
--- mpid/nt_server/winmpd/mpich1/MPIRun/LaunchProcess.cpp	2003/01/09 23:17:41	1.21
***************
*** 69,78 ****
--- 69,80 ----
      char pszIOE[10];
      char *dbg_str = "no";
      char *pszMap = NULL;
+     bool bLocalStartup = false;
  
      if (arg->bUseDebugFlag)
  	dbg_str = "yes";
  
+     /*
      if (arg->i == 0 && HostIsLocal(arg->pszHost))
      {
  	CreateInProcessMPD();
***************
*** 82,88 ****
--- 84,95 ----
      {
  	error = ConnectToMPD(arg->pszHost, nPort, arg->pszPassPhrase, &sock);
      }
+     */
  
+     if (arg->i == 0 && HostIsLocal(arg->pszHost))
+ 	bLocalStartup = true;
+     error = ConnectToMPD(arg->pszHost, nPort, arg->pszPassPhrase, &sock);
+ 
      //printf("MPIRunLaunchProcess:connecting to %s:%d rank %d\n", arg->pszHost, nPort, arg->i);fflush(stdout);
      //if ((error = ConnectToMPD(arg->pszHost, nPort, arg->pszPassPhrase, &sock)) == 0)
      if (error == 0)
***************
*** 246,341 ****
  	    delete pszMap;
  	}
  	//printf("MPIRunLaunchProcess:launch command = %s\n", pszStr);fflush(stdout);
! 	if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	{
! 	    printf("ERROR: Unable to send launch command to '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
! 	    easy_closesocket(sock);
! 	    SetEvent(g_hAbortEvent);
! 	    delete arg;
! 	    return;
! 	}
! 	if (!ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT))
! 	{
! 	    printf("ERROR: Unable to read the result of the launch command on '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
! 	    easy_closesocket(sock);
! 	    SetEvent(g_hAbortEvent);
! 	    delete arg;
! 	    return;
! 	}
! 	launchid = atoi(pszStr);
! 	// save the launch id, get the pid
! 	sprintf(pszStr, "getpid %d", launchid);
! 	if (WriteString(sock, pszStr) == SOCKET_ERROR)
! 	{
! 	    printf("ERROR: Unable to send getpid command to '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
! 	    easy_closesocket(sock);
! 	    SetEvent(g_hAbortEvent);
! 	    delete arg;
! 	    return;
! 	}
! 	// the following timeout needs to be longer than MPIRUN_SHORT_TIMEOUT because the CreateProcess command may take
! 	// a while to start the process if it lives in a shared directory
! 	if (!ReadStringTimeout(sock, pszStr, g_nMPIRUN_CREATE_PROCESS_TIMEOUT))
! 	{
! 	    error = WSAGetLastError();
! 	    if (error == ERROR_TIMEOUT || error == 0)
! 	    {
! 		printf("Launch process error: Timed out waiting for the result of the process launch command sent to host '%s'\r\n", arg->pszHost);
! 	    }
! 	    else
! 	    {
! 		printf("Launch process error: Unable to read the result of the getpid command on '%s'\r\nError %d", arg->pszHost, error);
! 		fflush(stdout);
! 	    }
! 	    printf("Attempt to launch '%s' on '%s' failed.\n", arg->pszCmdLine, arg->pszHost);
! 	    fflush(stdout);
! 	    easy_closesocket(sock);
! 	    SetEvent(g_hAbortEvent);
! 	    delete arg;
! 	    return;
  	}
! 	nPid = atoi(pszStr);
! 	if (nPid == -1)
  	{
- 	    sprintf(pszStr, "geterror %d", launchid);
  	    if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	    {
! 		printf("ERROR: Unable to send geterror command after an unsuccessful launch on '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
  		easy_closesocket(sock);
  		SetEvent(g_hAbortEvent);
  		delete arg;
  		return;
  	    }
  	    if (!ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT))
  	    {
! 		printf("ERROR: Unable to read the result of the geterror command on '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
  		easy_closesocket(sock);
  		SetEvent(g_hAbortEvent);
  		delete arg;
  		return;
  	    }
! 	    if (strcmp(pszStr, "ERROR_SUCCESS"))
  	    {
! 		if (arg->i == 0 && !g_bNoMPI)
  		{
! 		    printf("Failed to launch the root process:\n%s\n%s\n", arg->pszCmdLine, pszStr);fflush(stdout);
  		}
  		else
  		{
! 		    printf("Failed to launch process %d:\n'%s'\n%s\n", arg->i, arg->pszCmdLine, pszStr);fflush(stdout);
  		}
! 
! 		sprintf(pszStr, "freeprocess %d", launchid);
! 		WriteString(sock, pszStr);
! 		ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
! 		WriteString(sock, "done");
  		easy_closesocket(sock);
  		SetEvent(g_hAbortEvent);
  		delete arg;
  		return;
  	    }
  	}
! 	
  	// Get the port number and redirect input to the first process
  	if (arg->i == 0 && !g_bNoMPI)
  	{
--- 253,356 ----
  	    delete pszMap;
  	}
  	//printf("MPIRunLaunchProcess:launch command = %s\n", pszStr);fflush(stdout);
! 	if (bLocalStartup)
  	{
! 	    // launch process
! 	    nPid = -1;
  	}
! 	else
  	{
  	    if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	    {
! 		printf("ERROR: Unable to send launch command to '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
  		easy_closesocket(sock);
  		SetEvent(g_hAbortEvent);
  		delete arg;
  		return;
  	    }
  	    if (!ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT))
+ 	    {
+ 		printf("ERROR: Unable to read the result of the launch command on '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
+ 		easy_closesocket(sock);
+ 		SetEvent(g_hAbortEvent);
+ 		delete arg;
+ 		return;
+ 	    }
+ 	    launchid = atoi(pszStr);
+ 	    // save the launch id, get the pid
+ 	    sprintf(pszStr, "getpid %d", launchid);
+ 	    if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	    {
! 		printf("ERROR: Unable to send getpid command to '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
  		easy_closesocket(sock);
  		SetEvent(g_hAbortEvent);
  		delete arg;
  		return;
  	    }
! 	    // the following timeout needs to be longer than MPIRUN_SHORT_TIMEOUT because the CreateProcess command may take
! 	    // a while to start the process if it lives in a shared directory
! 	    if (!ReadStringTimeout(sock, pszStr, g_nMPIRUN_CREATE_PROCESS_TIMEOUT))
  	    {
! 		error = WSAGetLastError();
! 		if (error == ERROR_TIMEOUT || error == 0)
  		{
! 		    printf("Launch process error: Timed out waiting for the result of the process launch command sent to host '%s'\r\n", arg->pszHost);
  		}
  		else
  		{
! 		    printf("Launch process error: Unable to read the result of the getpid command on '%s'\r\nError %d", arg->pszHost, error);
! 		    fflush(stdout);
  		}
! 		printf("Attempt to launch '%s' on '%s' failed.\n", arg->pszCmdLine, arg->pszHost);
! 		fflush(stdout);
  		easy_closesocket(sock);
  		SetEvent(g_hAbortEvent);
  		delete arg;
  		return;
  	    }
+ 	    nPid = atoi(pszStr);
+ 	    if (nPid == -1)
+ 	    {
+ 		sprintf(pszStr, "geterror %d", launchid);
+ 		if (WriteString(sock, pszStr) == SOCKET_ERROR)
+ 		{
+ 		    printf("ERROR: Unable to send geterror command after an unsuccessful launch on '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
+ 		    easy_closesocket(sock);
+ 		    SetEvent(g_hAbortEvent);
+ 		    delete arg;
+ 		    return;
+ 		}
+ 		if (!ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT))
+ 		{
+ 		    printf("ERROR: Unable to read the result of the geterror command on '%s'\r\nError %d", arg->pszHost, WSAGetLastError());
+ 		    easy_closesocket(sock);
+ 		    SetEvent(g_hAbortEvent);
+ 		    delete arg;
+ 		    return;
+ 		}
+ 		if (strcmp(pszStr, "ERROR_SUCCESS"))
+ 		{
+ 		    if (arg->i == 0 && !g_bNoMPI)
+ 		    {
+ 			printf("Failed to launch the root process:\n%s\n%s\n", arg->pszCmdLine, pszStr);fflush(stdout);
+ 		    }
+ 		    else
+ 		    {
+ 			printf("Failed to launch process %d:\n'%s'\n%s\n", arg->i, arg->pszCmdLine, pszStr);fflush(stdout);
+ 		    }
+ 		    
+ 		    sprintf(pszStr, "freeprocess %d", launchid);
+ 		    WriteString(sock, pszStr);
+ 		    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
+ 		    WriteString(sock, "done");
+ 		    easy_closesocket(sock);
+ 		    SetEvent(g_hAbortEvent);
+ 		    delete arg;
+ 		    return;
+ 		}
+ 	    }
  	}
! 
  	// Get the port number and redirect input to the first process
  	if (arg->i == 0 && !g_bNoMPI)
  	{
***************
*** 393,456 ****
  		    }
  		    else
  		    {
! 			sprintf(pszStr, "getexitcode %d", launchid);
! 			if (WriteString(sock, pszStr) == SOCKET_ERROR)
  			{
! 			    printf("Error: Unable to send a getexitcode command to '%s'\r\nError %d", 
! 				arg->pszHost, WSAGetLastError());fflush(stdout);
! 			    easy_closesocket(sock);
! 			    SetEvent(g_hAbortEvent);
! 			    delete arg;
! 			    return;
  			}
! 			if (!ReadStringTimeout(sock, pszStr, g_nLaunchTimeout))
! 			{
! 			    printf("ERROR: Unable to read the result of the root getexitcode command on '%s': error %d", 
! 				arg->pszHost, WSAGetLastError());
! 			    sprintf(pszStr, "freeprocess %d", launchid);
! 			    WriteString(sock, pszStr);
! 			    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
! 			    WriteString(sock, "done");
! 			    easy_closesocket(sock);
! 			    SetEvent(g_hAbortEvent);
! 			    delete arg;
! 			    return;
! 			}
! 			if (stricmp(pszStr, "ACTIVE") == 0)
  			{
! 			    printf("ERROR: timed-out waiting for the root process to call MPI_Init\n");
! 			    if (g_bUseJobHost)
  			    {
! 				// Save this process's information to the job database
! 				PutJobProcessInDatabase(arg, nPid);
  			    }
! 			}
! 			else
! 			{
! 			    printf("ERROR: The root process has unexpectedly exited.\n");
! 			    if (g_bUseJobHost)
  			    {
! 				sprintf(pszStr, "geterror %d", launchid);
  				WriteString(sock, pszStr);
- 				pszStr[0] = '\0';
  				ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
! 				// Save this process's information to the job database
! 				PutJobProcessInDatabase(arg, nPid);
! 				UpdateJobKeyValue(0, "error", pszStr);
  			    }
  			    sprintf(pszStr, "freeprocess %d", launchid);
  			    WriteString(sock, pszStr);
  			    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
- 			    WriteString(sock, "done");
- 			    easy_closesocket(sock);
- 			    SetEvent(g_hAbortEvent);
- 			    delete arg;
- 			    return;
  			}
- 			
- 			sprintf(pszStr, "freeprocess %d", launchid);
- 			WriteString(sock, pszStr);
- 			ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
  		    }
  		    WriteString(sock, "done");
  		    easy_closesocket(sock);
--- 408,478 ----
  		    }
  		    else
  		    {
! 			if (bLocalStartup)
  			{
! 			    // check to see if the process is still running
  			}
! 			else
  			{
! 			    sprintf(pszStr, "getexitcode %d", launchid);
! 			    if (WriteString(sock, pszStr) == SOCKET_ERROR)
  			    {
! 				printf("Error: Unable to send a getexitcode command to '%s'\r\nError %d", 
! 				    arg->pszHost, WSAGetLastError());fflush(stdout);
! 				easy_closesocket(sock);
! 				SetEvent(g_hAbortEvent);
! 				delete arg;
! 				return;
  			    }
! 			    if (!ReadStringTimeout(sock, pszStr, g_nLaunchTimeout))
  			    {
! 				printf("ERROR: Unable to read the result of the root getexitcode command on '%s': error %d", 
! 				    arg->pszHost, WSAGetLastError());
! 				sprintf(pszStr, "freeprocess %d", launchid);
  				WriteString(sock, pszStr);
  				ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
! 				WriteString(sock, "done");
! 				easy_closesocket(sock);
! 				SetEvent(g_hAbortEvent);
! 				delete arg;
! 				return;
  			    }
+ 			    if (stricmp(pszStr, "ACTIVE") == 0)
+ 			    {
+ 				printf("ERROR: timed-out waiting for the root process to call MPI_Init\n");
+ 				if (g_bUseJobHost)
+ 				{
+ 				    // Save this process's information to the job database
+ 				    PutJobProcessInDatabase(arg, nPid);
+ 				}
+ 			    }
+ 			    else
+ 			    {
+ 				printf("ERROR: The root process has unexpectedly exited.\n");
+ 				if (g_bUseJobHost)
+ 				{
+ 				    sprintf(pszStr, "geterror %d", launchid);
+ 				    WriteString(sock, pszStr);
+ 				    pszStr[0] = '\0';
+ 				    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
+ 				    // Save this process's information to the job database
+ 				    PutJobProcessInDatabase(arg, nPid);
+ 				    UpdateJobKeyValue(0, "error", pszStr);
+ 				}
+ 				sprintf(pszStr, "freeprocess %d", launchid);
+ 				WriteString(sock, pszStr);
+ 				ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
+ 				WriteString(sock, "done");
+ 				easy_closesocket(sock);
+ 				SetEvent(g_hAbortEvent);
+ 				delete arg;
+ 				return;
+ 			    }
+ 
  			    sprintf(pszStr, "freeprocess %d", launchid);
  			    WriteString(sock, pszStr);
  			    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
  			}
  		    }
  		    WriteString(sock, "done");
  		    easy_closesocket(sock);
***************
*** 478,486 ****
  			    if (id == launchid)
  			    {
  				printf("ERROR: root process has unexpectedly exited. Exit code = %d\n", x);
! 				sprintf(pszStr, "freeprocess %d", launchid);
! 				WriteString(sock, pszStr);
! 				ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
  				WriteString(sock, "done");
  				easy_closesocket(sock);
  				SetEvent(g_hAbortEvent);
--- 500,511 ----
  			    if (id == launchid)
  			    {
  				printf("ERROR: root process has unexpectedly exited. Exit code = %d\n", x);
! 				if (bLocalStartup)
! 				{
! 				    sprintf(pszStr, "freeprocess %d", launchid);
! 				    WriteString(sock, pszStr);
! 				    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
! 				}
  				WriteString(sock, "done");
  				easy_closesocket(sock);
  				SetEvent(g_hAbortEvent);
***************
*** 492,500 ****
  		    else
  		    {
  			printf("ERROR: barrier failed on '%s':\n%s", arg->pszHost, pszStr);
! 			sprintf(pszStr, "freeprocess %d", launchid);
! 			WriteString(sock, pszStr);
! 			ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
  			WriteString(sock, "done");
  			easy_closesocket(sock);
  			SetEvent(g_hAbortEvent);
--- 517,528 ----
  		    else
  		    {
  			printf("ERROR: barrier failed on '%s':\n%s", arg->pszHost, pszStr);
! 			if (bLocalStartup)
! 			{
! 			    sprintf(pszStr, "freeprocess %d", launchid);
! 			    WriteString(sock, pszStr);
! 			    ReadStringTimeout(sock, pszStr, g_nMPIRUN_SHORT_TIMEOUT);
! 			}
  			WriteString(sock, "done");
  			easy_closesocket(sock);
  			SetEvent(g_hAbortEvent);
***************
*** 585,600 ****
  	}
  
  	// Wait for the process to exit
! 	sprintf(pszStr, "getexitcodewait %d", launchid);
! 	if (WriteString(sock, pszStr) == SOCKET_ERROR)
  	{
! 	    printf("Error: Unable to send a getexitcodewait command to '%s'\r\nError %d", arg->pszHost, WSAGetLastError());fflush(stdout);
! 	    easy_closesocket(sock);
! 	    SetEvent(g_hAbortEvent);
! 	    delete arg;
! 	    return;
  	}
- 	//printf("getexitcodewait %d socket: 0x%p:%d\n", arg->i, sock, sock);fflush(stdout);
  
  	int i = InterlockedIncrement(&g_nNumProcessSockets) - 1;
  	g_pProcessSocket[i] = sock;
--- 613,635 ----
  	}
  
  	// Wait for the process to exit
! 	if (bLocalStartup)
! 	{
! 	    // send a simulated getexitcodewait command to the local process
! 	}
! 	else
  	{
! 	    sprintf(pszStr, "getexitcodewait %d", launchid);
! 	    if (WriteString(sock, pszStr) == SOCKET_ERROR)
! 	    {
! 		printf("Error: Unable to send a getexitcodewait command to '%s'\r\nError %d", arg->pszHost, WSAGetLastError());fflush(stdout);
! 		easy_closesocket(sock);
! 		SetEvent(g_hAbortEvent);
! 		delete arg;
! 		return;
! 	    }
! 	    //printf("getexitcodewait %d socket: 0x%p:%d\n", arg->i, sock, sock);fflush(stdout);
  	}
  
  	int i = InterlockedIncrement(&g_nNumProcessSockets) - 1;
  	g_pProcessSocket[i] = sock;
Index: mpid/nt_server/winmpd/mpich1/MPIRun/localonly.cpp
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/nt_server/winmpd/mpich1/MPIRun/localonly.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -c -r1.4 -r1.5
*** mpid/nt_server/winmpd/mpich1/MPIRun/localonly.cpp	2002/02/22 18:28:45	1.4
--- mpid/nt_server/winmpd/mpich1/MPIRun/localonly.cpp	2003/01/10 18:23:30	1.5
***************
*** 291,296 ****
--- 291,298 ----
  	    {
  		Translate_Error(GetLastError(), error_msg, "ReadFile failed ");
  		printf(error_msg);
+ 		CloseHandle(hFile);
+ 		DeleteFile(pszExtra);
  		return;
  	    }
  	    if (num_read == 0)
***************
*** 299,304 ****
--- 301,308 ----
  		{
  		    printf("Wait for process 0 to write port to temporary file timed out\n");
  		    TerminateProcess(hProcess, 0);
+ 		    CloseHandle(hFile);
+ 		    DeleteFile(pszExtra);
  		    return;
  		}
  		Sleep(100);
Index: mpid/server/aclocal.m4
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/server/aclocal.m4,v
retrieving revision 1.8
retrieving revision 1.9
diff -c -r1.8 -r1.9
*** mpid/server/aclocal.m4	2001/04/03 15:44:27	1.8
--- mpid/server/aclocal.m4	2003/01/09 21:03:07	1.9
***************
*** 61,72 ****
  	found_ssl_in_cache="no"
      ])
      if test "$found_ssl_in_cache" = "no"; then
! 	AC_FIND_USER_INCLUDE(ssl,, ac_cv_sys_ssl="yes", ac_cv_sys_ssl="no")
      else
  	AC_MSG_RESULT($ac_cv_sys_ssl)
      fi
      if test "$ac_cv_sys_ssl" = "yes"; then
!         AC_FIND_USER_INCLUDE(ssllib,,ac_cvs_sys_ssl="yes",ac_cv_sys_ssl="no")
      fi
      if test "$ac_cv_sys_ssl" = "yes"; then
  	AC_DEFINE(HAVE_SSL)
--- 61,72 ----
  	found_ssl_in_cache="no"
      ])
      if test "$found_ssl_in_cache" = "no"; then
! 	AC_FIND_USER_INCLUDE(ssl,/usr/local/openssl, ac_cv_sys_ssl="yes", ac_cv_sys_ssl="no")
      else
  	AC_MSG_RESULT($ac_cv_sys_ssl)
      fi
      if test "$ac_cv_sys_ssl" = "yes"; then
!         AC_FIND_USER_INCLUDE(ssllib,/usr/local/openssl,ac_cvs_sys_ssl="yes",ac_cv_sys_ssl="no")
      fi
      if test "$ac_cv_sys_ssl" = "yes"; then
  	AC_DEFINE(HAVE_SSL)
***************
*** 127,133 ****
  	/opt/$1 \
  	/opt/local \
  	/opt/local/$1 \
! 	/local/encap/$1 ; do
  	if test -r $dir/$1.h ; then
  	    ac_find_inc_dir=$dir
  	    break
--- 127,133 ----
  	/opt/$1 \
  	/opt/local \
  	/opt/local/$1 \
! 	/local/encap/$1 $USER_INCLUDE_DIRS ; do
  	if test -r $dir/$1.h ; then
  	    ac_find_inc_dir=$dir
  	    break
Index: mpid/server/configure
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/server/configure,v
retrieving revision 1.17
retrieving revision 1.18
diff -c -r1.17 -r1.18
*** mpid/server/configure	2001/04/03 15:44:27	1.17
--- mpid/server/configure	2003/01/09 21:03:07	1.18
***************
*** 12,19 ****
  ac_default_prefix=/usr/local
  # Any additions from configure.in:
  ac_help="$ac_help
! --enable-IWAY support IWAYl"
  ac_help="$ac_help
  --enable-cflags=...   additional flags for c compiler"
  
  # Initialize some variables set by options.
--- 12,22 ----
  ac_default_prefix=/usr/local
  # Any additions from configure.in:
  ac_help="$ac_help
!  --enable-IWAY support IWAYl"
  ac_help="$ac_help
+  --with-include=dirs - add dirs to the list of directories to search for
+  tools such as ssl "
+ ac_help="$ac_help
  --enable-cflags=...   additional flags for c compiler"
  
  # Initialize some variables set by options.
***************
*** 525,531 ****
  # Extract the first word of "gcc", so it can be a program name with args.
  set dummy gcc; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:529: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 528,534 ----
  # Extract the first word of "gcc", so it can be a program name with args.
  set dummy gcc; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:532: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 555,561 ****
    # Extract the first word of "cc", so it can be a program name with args.
  set dummy cc; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:559: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 558,564 ----
    # Extract the first word of "cc", so it can be a program name with args.
  set dummy cc; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:562: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 606,612 ****
        # Extract the first word of "cl", so it can be a program name with args.
  set dummy cl; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:610: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 609,615 ----
        # Extract the first word of "cl", so it can be a program name with args.
  set dummy cl; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:613: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 638,644 ****
  fi
  
  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
! echo "configure:642: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
  
  ac_ext=c
  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
--- 641,647 ----
  fi
  
  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
! echo "configure:645: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
  
  ac_ext=c
  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
***************
*** 649,660 ****
  
  cat > conftest.$ac_ext << EOF
  
! #line 653 "configure"
  #include "confdefs.h"
  
  main(){return(0);}
  EOF
! if { (eval echo configure:658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    ac_cv_prog_cc_works=yes
    # If we can't run a trivial program, we are probably using a cross compiler.
    if (./conftest; exit) 2>/dev/null; then
--- 652,663 ----
  
  cat > conftest.$ac_ext << EOF
  
! #line 656 "configure"
  #include "confdefs.h"
  
  main(){return(0);}
  EOF
! if { (eval echo configure:661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    ac_cv_prog_cc_works=yes
    # If we can't run a trivial program, we are probably using a cross compiler.
    if (./conftest; exit) 2>/dev/null; then
***************
*** 680,691 ****
    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
  fi
  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
! echo "configure:684: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
  cross_compiling=$ac_cv_prog_cc_cross
  
  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
! echo "configure:689: checking whether we are using GNU C" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 683,694 ----
    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
  fi
  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
! echo "configure:687: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
  cross_compiling=$ac_cv_prog_cc_cross
  
  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
! echo "configure:692: checking whether we are using GNU C" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 694,700 ****
    yes;
  #endif
  EOF
! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:698: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
    ac_cv_prog_gcc=yes
  else
    ac_cv_prog_gcc=no
--- 697,703 ----
    yes;
  #endif
  EOF
! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
    ac_cv_prog_gcc=yes
  else
    ac_cv_prog_gcc=no
***************
*** 713,719 ****
  ac_save_CFLAGS="$CFLAGS"
  CFLAGS=
  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
! echo "configure:717: checking whether ${CC-cc} accepts -g" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 716,722 ----
  ac_save_CFLAGS="$CFLAGS"
  CFLAGS=
  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
! echo "configure:720: checking whether ${CC-cc} accepts -g" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 747,753 ****
  # Extract the first word of "ranlib", so it can be a program name with args.
  set dummy ranlib; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:751: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 750,756 ----
  # Extract the first word of "ranlib", so it can be a program name with args.
  set dummy ranlib; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
! echo "configure:754: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 779,785 ****
  
  
  echo $ac_n "checking for virtual path format""... $ac_c" 1>&6
! echo "configure:783: checking for virtual path format" >&5
  rm -rf conftest*
  mkdir conftestdir
  cat >conftestdir/a.c <<EOF
--- 782,788 ----
  
  
  echo $ac_n "checking for virtual path format""... $ac_c" 1>&6
! echo "configure:786: checking for virtual path format" >&5
  rm -rf conftest*
  mkdir conftestdir
  cat >conftestdir/a.c <<EOF
***************
*** 819,832 ****
  # require TWO libraries on some systems!
  
  echo $ac_n "checking for library containing xdr_array""... $ac_c" 1>&6
! echo "configure:823: checking for library containing xdr_array" >&5
  if eval "test \"`echo '$''{'ac_cv_search_xdr_array'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_func_search_save_LIBS="$LIBS"
  ac_cv_search_xdr_array="no"
  cat > conftest.$ac_ext <<EOF
! #line 830 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
--- 822,835 ----
  # require TWO libraries on some systems!
  
  echo $ac_n "checking for library containing xdr_array""... $ac_c" 1>&6
! echo "configure:826: checking for library containing xdr_array" >&5
  if eval "test \"`echo '$''{'ac_cv_search_xdr_array'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_func_search_save_LIBS="$LIBS"
  ac_cv_search_xdr_array="no"
  cat > conftest.$ac_ext <<EOF
! #line 833 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
***************
*** 837,843 ****
  xdr_array()
  ; return 0; }
  EOF
! if { (eval echo configure:841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_xdr_array="none required"
  else
--- 840,846 ----
  xdr_array()
  ; return 0; }
  EOF
! if { (eval echo configure:844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_xdr_array="none required"
  else
***************
*** 848,854 ****
  test "$ac_cv_search_xdr_array" = "no" && for i in nsl; do
  LIBS="-l$i  $ac_func_search_save_LIBS"
  cat > conftest.$ac_ext <<EOF
! #line 852 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
--- 851,857 ----
  test "$ac_cv_search_xdr_array" = "no" && for i in nsl; do
  LIBS="-l$i  $ac_func_search_save_LIBS"
  cat > conftest.$ac_ext <<EOF
! #line 855 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
***************
*** 859,865 ****
  xdr_array()
  ; return 0; }
  EOF
! if { (eval echo configure:863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_xdr_array="-l$i"
  break
--- 862,868 ----
  xdr_array()
  ; return 0; }
  EOF
! if { (eval echo configure:866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_xdr_array="-l$i"
  break
***************
*** 881,894 ****
  fi
  
  echo $ac_n "checking for library containing socket""... $ac_c" 1>&6
! echo "configure:885: checking for library containing socket" >&5
  if eval "test \"`echo '$''{'ac_cv_search_socket'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_func_search_save_LIBS="$LIBS"
  ac_cv_search_socket="no"
  cat > conftest.$ac_ext <<EOF
! #line 892 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
--- 884,897 ----
  fi
  
  echo $ac_n "checking for library containing socket""... $ac_c" 1>&6
! echo "configure:888: checking for library containing socket" >&5
  if eval "test \"`echo '$''{'ac_cv_search_socket'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_func_search_save_LIBS="$LIBS"
  ac_cv_search_socket="no"
  cat > conftest.$ac_ext <<EOF
! #line 895 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
***************
*** 899,905 ****
  socket()
  ; return 0; }
  EOF
! if { (eval echo configure:903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_socket="none required"
  else
--- 902,908 ----
  socket()
  ; return 0; }
  EOF
! if { (eval echo configure:906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_socket="none required"
  else
***************
*** 910,916 ****
  test "$ac_cv_search_socket" = "no" && for i in socket; do
  LIBS="-l$i  $ac_func_search_save_LIBS"
  cat > conftest.$ac_ext <<EOF
! #line 914 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
--- 913,919 ----
  test "$ac_cv_search_socket" = "no" && for i in socket; do
  LIBS="-l$i  $ac_func_search_save_LIBS"
  cat > conftest.$ac_ext <<EOF
! #line 917 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
***************
*** 921,927 ****
  socket()
  ; return 0; }
  EOF
! if { (eval echo configure:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_socket="-l$i"
  break
--- 924,930 ----
  socket()
  ; return 0; }
  EOF
! if { (eval echo configure:928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_socket="-l$i"
  break
***************
*** 945,958 ****
  save_LIBS="$LIBS"
  
  echo $ac_n "checking for library containing crypt""... $ac_c" 1>&6
! echo "configure:949: checking for library containing crypt" >&5
  if eval "test \"`echo '$''{'ac_cv_search_crypt'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_func_search_save_LIBS="$LIBS"
  ac_cv_search_crypt="no"
  cat > conftest.$ac_ext <<EOF
! #line 956 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
--- 948,961 ----
  save_LIBS="$LIBS"
  
  echo $ac_n "checking for library containing crypt""... $ac_c" 1>&6
! echo "configure:952: checking for library containing crypt" >&5
  if eval "test \"`echo '$''{'ac_cv_search_crypt'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_func_search_save_LIBS="$LIBS"
  ac_cv_search_crypt="no"
  cat > conftest.$ac_ext <<EOF
! #line 959 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
***************
*** 963,969 ****
  crypt()
  ; return 0; }
  EOF
! if { (eval echo configure:967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_crypt="none required"
  else
--- 966,972 ----
  crypt()
  ; return 0; }
  EOF
! if { (eval echo configure:970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_crypt="none required"
  else
***************
*** 974,980 ****
  test "$ac_cv_search_crypt" = "no" && for i in crypt; do
  LIBS="-l$i  $ac_func_search_save_LIBS"
  cat > conftest.$ac_ext <<EOF
! #line 978 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
--- 977,983 ----
  test "$ac_cv_search_crypt" = "no" && for i in crypt; do
  LIBS="-l$i  $ac_func_search_save_LIBS"
  cat > conftest.$ac_ext <<EOF
! #line 981 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
***************
*** 985,991 ****
  crypt()
  ; return 0; }
  EOF
! if { (eval echo configure:989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_crypt="-l$i"
  break
--- 988,994 ----
  crypt()
  ; return 0; }
  EOF
! if { (eval echo configure:992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    ac_cv_search_crypt="-l$i"
  break
***************
*** 1011,1017 ****
  fi
  
  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
! echo "configure:1015: checking how to run the C preprocessor" >&5
  # On Suns, sometimes $CPP names a directory.
  if test -n "$CPP" && test -d "$CPP"; then
    CPP=
--- 1014,1020 ----
  fi
  
  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
! echo "configure:1018: checking how to run the C preprocessor" >&5
  # On Suns, sometimes $CPP names a directory.
  if test -n "$CPP" && test -d "$CPP"; then
    CPP=
***************
*** 1026,1038 ****
    # On the NeXT, cc -E runs the code through the compiler's parser,
    # not just through cpp.
    cat > conftest.$ac_ext <<EOF
! #line 1030 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
--- 1029,1041 ----
    # On the NeXT, cc -E runs the code through the compiler's parser,
    # not just through cpp.
    cat > conftest.$ac_ext <<EOF
! #line 1033 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
***************
*** 1043,1055 ****
    rm -rf conftest*
    CPP="${CC-cc} -E -traditional-cpp"
    cat > conftest.$ac_ext <<EOF
! #line 1047 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
--- 1046,1058 ----
    rm -rf conftest*
    CPP="${CC-cc} -E -traditional-cpp"
    cat > conftest.$ac_ext <<EOF
! #line 1050 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
***************
*** 1060,1072 ****
    rm -rf conftest*
    CPP="${CC-cc} -nologo -E"
    cat > conftest.$ac_ext <<EOF
! #line 1064 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1070: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
--- 1063,1075 ----
    rm -rf conftest*
    CPP="${CC-cc} -nologo -E"
    cat > conftest.$ac_ext <<EOF
! #line 1067 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
***************
*** 1094,1110 ****
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1098: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1103 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1108: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1097,1113 ----
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1101: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1106 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1111: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1134,1150 ****
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1138: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1143 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1148: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1137,1153 ----
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1141: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1146 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1151: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1174,1190 ****
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1178: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1183 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1177,1193 ----
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1181: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1186 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1214,1230 ****
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1218: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1223 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1217,1233 ----
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1221: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1226 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1253,1264 ****
  for ac_func in index rindex
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1257: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1262 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
--- 1256,1267 ----
  for ac_func in index rindex
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1260: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1265 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
***************
*** 1281,1287 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
--- 1284,1290 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
***************
*** 1308,1319 ****
  for ac_func in seteuid setresuid
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1312: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1317 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
--- 1311,1322 ----
  for ac_func in seteuid setresuid
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1315: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1320 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
***************
*** 1336,1342 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
--- 1339,1345 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
***************
*** 1361,1367 ****
  done
  
  echo $ac_n "checking for Kerberos (/usr/kerberos)""... $ac_c" 1>&6
! echo "configure:1365: checking for Kerberos (/usr/kerberos)" >&5
      used_cache=yes
      if eval "test \"`echo '$''{'ac_cv_sys_kerberos'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
--- 1364,1370 ----
  done
  
  echo $ac_n "checking for Kerberos (/usr/kerberos)""... $ac_c" 1>&6
! echo "configure:1368: checking for Kerberos (/usr/kerberos)" >&5
      used_cache=yes
      if eval "test \"`echo '$''{'ac_cv_sys_kerberos'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
***************
*** 1371,1382 ****
  	if test -d /usr/kerberos ; then
  	    echo "$ac_t""yes" 1>&6
  	    echo $ac_n "checking for ka_UserAuthenticateGeneral""... $ac_c" 1>&6
! echo "configure:1375: checking for ka_UserAuthenticateGeneral" >&5
  if eval "test \"`echo '$''{'ac_cv_func_ka_UserAuthenticateGeneral'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1380 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char ka_UserAuthenticateGeneral(); below.  */
--- 1374,1385 ----
  	if test -d /usr/kerberos ; then
  	    echo "$ac_t""yes" 1>&6
  	    echo $ac_n "checking for ka_UserAuthenticateGeneral""... $ac_c" 1>&6
! echo "configure:1378: checking for ka_UserAuthenticateGeneral" >&5
  if eval "test \"`echo '$''{'ac_cv_func_ka_UserAuthenticateGeneral'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1383 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char ka_UserAuthenticateGeneral(); below.  */
***************
*** 1399,1405 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_ka_UserAuthenticateGeneral=yes"
  else
--- 1402,1408 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_ka_UserAuthenticateGeneral=yes"
  else
***************
*** 1433,1439 ****
      fi
  
  echo $ac_n "checking for AFS (/usr/afsws)""... $ac_c" 1>&6
! echo "configure:1437: checking for AFS (/usr/afsws)" >&5
      if eval "test \"`echo '$''{'ac_cv_sys_afs'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 1436,1442 ----
      fi
  
  echo $ac_n "checking for AFS (/usr/afsws)""... $ac_c" 1>&6
! echo "configure:1440: checking for AFS (/usr/afsws)" >&5
      if eval "test \"`echo '$''{'ac_cv_sys_afs'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 1441,1457 ****
  	    afs_avail=1
  	    ac_safe=`echo "afs/kauth.h" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for afs/kauth.h""... $ac_c" 1>&6
! echo "configure:1445: checking for afs/kauth.h" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1450 "configure"
  #include "confdefs.h"
  #include <afs/kauth.h>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1444,1460 ----
  	    afs_avail=1
  	    ac_safe=`echo "afs/kauth.h" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for afs/kauth.h""... $ac_c" 1>&6
! echo "configure:1448: checking for afs/kauth.h" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1453 "configure"
  #include "confdefs.h"
  #include <afs/kauth.h>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1475,1491 ****
  
  	    ac_safe=`echo "afs/kautils.h" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for afs/kautils.h""... $ac_c" 1>&6
! echo "configure:1479: checking for afs/kautils.h" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1484 "configure"
  #include "confdefs.h"
  #include <afs/kautils.h>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1489: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1478,1494 ----
  
  	    ac_safe=`echo "afs/kautils.h" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for afs/kautils.h""... $ac_c" 1>&6
! echo "configure:1482: checking for afs/kautils.h" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1487 "configure"
  #include "confdefs.h"
  #include <afs/kautils.h>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1509,1525 ****
  
  	    ac_safe=`echo "afs/auth.h" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for afs/auth.h""... $ac_c" 1>&6
! echo "configure:1513: checking for afs/auth.h" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1518 "configure"
  #include "confdefs.h"
  #include <afs/auth.h>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1523: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1512,1528 ----
  
  	    ac_safe=`echo "afs/auth.h" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for afs/auth.h""... $ac_c" 1>&6
! echo "configure:1516: checking for afs/auth.h" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1521 "configure"
  #include "confdefs.h"
  #include <afs/auth.h>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1561,1567 ****
      echo "$ac_t""$ac_cv_sys_afs" 1>&6
  
  echo $ac_n "checking for SSL in cache""... $ac_c" 1>&6
! echo "configure:1565: checking for SSL in cache" >&5
      found_ssl_in_cache="yes"
      if eval "test \"`echo '$''{'ac_cv_sys_ssl'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
--- 1564,1570 ----
      echo "$ac_t""$ac_cv_sys_afs" 1>&6
  
  echo $ac_n "checking for SSL in cache""... $ac_c" 1>&6
! echo "configure:1568: checking for SSL in cache" >&5
      found_ssl_in_cache="yes"
      if eval "test \"`echo '$''{'ac_cv_sys_ssl'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
***************
*** 1574,1582 ****
      if test "$found_ssl_in_cache" = "no"; then
  	
  echo $ac_n "checking for include directory for ssl""... $ac_c" 1>&6
! echo "configure:1578: checking for include directory for ssl" >&5
  ac_find_inc_dir=""
! for dir in  \
  	/usr \
  	/usr/include \
  	/usr/local \
--- 1577,1585 ----
      if test "$found_ssl_in_cache" = "no"; then
  	
  echo $ac_n "checking for include directory for ssl""... $ac_c" 1>&6
! echo "configure:1581: checking for include directory for ssl" >&5
  ac_find_inc_dir=""
! for dir in /usr/local/openssl \
  	/usr \
  	/usr/include \
  	/usr/local \
***************
*** 1587,1593 ****
  	/opt/ssl \
  	/opt/local \
  	/opt/local/ssl \
! 	/local/encap/ssl ; do
  	if test -r $dir/ssl.h ; then
  	    ac_find_inc_dir=$dir
  	    break
--- 1590,1596 ----
  	/opt/ssl \
  	/opt/local \
  	/opt/local/ssl \
! 	/local/encap/ssl $USER_INCLUDE_DIRS ; do
  	if test -r $dir/ssl.h ; then
  	    ac_find_inc_dir=$dir
  	    break
***************
*** 1612,1620 ****
      if test "$ac_cv_sys_ssl" = "yes"; then
          
  echo $ac_n "checking for include directory for ssllib""... $ac_c" 1>&6
! echo "configure:1616: checking for include directory for ssllib" >&5
  ac_find_inc_dir=""
! for dir in  \
  	/usr \
  	/usr/include \
  	/usr/local \
--- 1615,1623 ----
      if test "$ac_cv_sys_ssl" = "yes"; then
          
  echo $ac_n "checking for include directory for ssllib""... $ac_c" 1>&6
! echo "configure:1619: checking for include directory for ssllib" >&5
  ac_find_inc_dir=""
! for dir in /usr/local/openssl \
  	/usr \
  	/usr/include \
  	/usr/local \
***************
*** 1625,1631 ****
  	/opt/ssllib \
  	/opt/local \
  	/opt/local/ssllib \
! 	/local/encap/ssllib ; do
  	if test -r $dir/ssllib.h ; then
  	    ac_find_inc_dir=$dir
  	    break
--- 1628,1634 ----
  	/opt/ssllib \
  	/opt/local \
  	/opt/local/ssllib \
! 	/local/encap/ssllib $USER_INCLUDE_DIRS ; do
  	if test -r $dir/ssllib.h ; then
  	    ac_find_inc_dir=$dir
  	    break
***************
*** 1656,1662 ****
  if test "${enable_IWAY+set}" = set; then
    enableval="$enable_IWAY"
    echo $ac_n "checking for IWAY (/usr/local/iway)""... $ac_c" 1>&6
! echo "configure:1660: checking for IWAY (/usr/local/iway)" >&5
      if eval "test \"`echo '$''{'ac_cv_sys_iway'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 1659,1665 ----
  if test "${enable_IWAY+set}" = set; then
    enableval="$enable_IWAY"
    echo $ac_n "checking for IWAY (/usr/local/iway)""... $ac_c" 1>&6
! echo "configure:1663: checking for IWAY (/usr/local/iway)" >&5
      if eval "test \"`echo '$''{'ac_cv_sys_iway'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 1678,1698 ****
  
  fi
  
  for ac_hdr in strings.h string.h
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1686: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1691 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1696: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
--- 1681,1713 ----
  
  fi
  
+ # Check whether --with-INCLUDE or --without-INCLUDE was given.
+ if test "${with_INCLUDE+set}" = set; then
+   withval="$with_INCLUDE"
+   :
+ else
+   with_include=none
+ fi
+ 
+ if test "$with_include" != "none" ; then
+     # This variable is used in the FIND_USER_INCLUDE command
+     USER_INCLUDE_DIRS="$with_include"
+ fi
  for ac_hdr in strings.h string.h
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
! echo "configure:1701: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1706 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
! { (eval echo configure:1711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
***************
*** 1721,1732 ****
  for ac_func in getopt
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1725: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1730 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
--- 1736,1747 ----
  for ac_func in getopt
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1740: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1745 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
***************
*** 1749,1755 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
--- 1764,1770 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
***************
*** 1776,1787 ****
  for ac_func in strerror
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1780: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1785 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
--- 1791,1802 ----
  for ac_func in strerror
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1795: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1800 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
***************
*** 1804,1810 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
--- 1819,1825 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
***************
*** 1830,1836 ****
  
  found_ps_funcs="yes"
      echo $ac_n "checking for posix signal in cache""... $ac_c" 1>&6
! echo "configure:1834: checking for posix signal in cache" >&5
      if eval "test \"`echo '$''{'ac_cv_check_posix_signal'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 1845,1851 ----
  
  found_ps_funcs="yes"
      echo $ac_n "checking for posix signal in cache""... $ac_c" 1>&6
! echo "configure:1849: checking for posix signal in cache" >&5
      if eval "test \"`echo '$''{'ac_cv_check_posix_signal'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 1845,1856 ****
          for ac_func in sigaction sigemptyset sigaddset sigprocmask waitpid
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1849: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1854 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
--- 1860,1871 ----
          for ac_func in sigaction sigemptyset sigaddset sigprocmask waitpid
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:1864: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 1869 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
***************
*** 1873,1879 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
--- 1888,1894 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
***************
*** 1919,1930 ****
  
  if test "$ac_cv_check_posix_signal" = "no" ; then
      echo $ac_n "checking for union wait""... $ac_c" 1>&6
! echo "configure:1923: checking for union wait" >&5
      if eval "test \"`echo '$''{'ac_cv_type_union_wait'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    	cat > conftest.$ac_ext <<EOF
! #line 1928 "configure"
  #include "confdefs.h"
  #include <sys/wait.h>
  
--- 1934,1945 ----
  
  if test "$ac_cv_check_posix_signal" = "no" ; then
      echo $ac_n "checking for union wait""... $ac_c" 1>&6
! echo "configure:1938: checking for union wait" >&5
      if eval "test \"`echo '$''{'ac_cv_type_union_wait'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    	cat > conftest.$ac_ext <<EOF
! #line 1943 "configure"
  #include "confdefs.h"
  #include <sys/wait.h>
  
***************
*** 1933,1939 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:1937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    ac_cv_type_union_wait=yes
  cat >> confdefs.h <<\EOF
--- 1948,1954 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:1952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    ac_cv_type_union_wait=yes
  cat >> confdefs.h <<\EOF
***************
*** 1953,1959 ****
       echo "$ac_t""$ac_cv_type_union_wait" 1>&6
  
      echo $ac_n "checking for wait3 that fills in rusage""... $ac_c" 1>&6
! echo "configure:1957: checking for wait3 that fills in rusage" >&5
  if eval "test \"`echo '$''{'ac_cv_func_wait3_rusage'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 1968,1974 ----
       echo "$ac_t""$ac_cv_type_union_wait" 1>&6
  
      echo $ac_n "checking for wait3 that fills in rusage""... $ac_c" 1>&6
! echo "configure:1972: checking for wait3 that fills in rusage" >&5
  if eval "test \"`echo '$''{'ac_cv_func_wait3_rusage'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 1961,1967 ****
    ac_cv_func_wait3_rusage=no
  else
    cat > conftest.$ac_ext <<EOF
! #line 1965 "configure"
  #include "confdefs.h"
  #include <sys/types.h>
  #include <sys/time.h>
--- 1976,1982 ----
    ac_cv_func_wait3_rusage=no
  else
    cat > conftest.$ac_ext <<EOF
! #line 1980 "configure"
  #include "confdefs.h"
  #include <sys/types.h>
  #include <sys/time.h>
***************
*** 1992,1998 ****
    }
  }
  EOF
! if { (eval echo configure:1996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_func_wait3_rusage=yes
  else
--- 2007,2013 ----
    }
  }
  EOF
! if { (eval echo configure:2011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_func_wait3_rusage=yes
  else
***************
*** 2018,2029 ****
  for ac_func in setpgrp
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:2022: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 2027 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
--- 2033,2044 ----
  for ac_func in setpgrp
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
! echo "configure:2037: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
! #line 2042 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
***************
*** 2046,2052 ****
  
  ; return 0; }
  EOF
! if { (eval echo configure:2050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
--- 2061,2067 ----
  
  ; return 0; }
  EOF
! if { (eval echo configure:2065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
***************
*** 2071,2077 ****
  done
  
  echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6
! echo "configure:2075: checking whether setpgrp takes no argument" >&5
  if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
--- 2086,2092 ----
  done
  
  echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6
! echo "configure:2090: checking whether setpgrp takes no argument" >&5
  if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
***************
*** 2079,2085 ****
    { echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; }
  else
    cat > conftest.$ac_ext <<EOF
! #line 2083 "configure"
  #include "confdefs.h"
  
  #ifdef HAVE_UNISTD_H
--- 2094,2100 ----
    { echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; }
  else
    cat > conftest.$ac_ext <<EOF
! #line 2098 "configure"
  #include "confdefs.h"
  
  #ifdef HAVE_UNISTD_H
***************
*** 2099,2105 ****
  }
  
  EOF
! if { (eval echo configure:2103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_func_setpgrp_void=no
  else
--- 2114,2120 ----
  }
  
  EOF
! if { (eval echo configure:2118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_func_setpgrp_void=no
  else
***************
*** 2130,2138 ****
  # the arguments *should* be.
  found_sockopt_type=0
  echo $ac_n "checking if getsockopt wants socklen_t""... $ac_c" 1>&6
! echo "configure:2134: checking if getsockopt wants socklen_t" >&5
  cat > conftest.$ac_ext <<EOF
! #line 2136 "configure"
  #include "confdefs.h"
  #include <sys/types.h>
  #include <sys/socket.h>
--- 2145,2153 ----
  # the arguments *should* be.
  found_sockopt_type=0
  echo $ac_n "checking if getsockopt wants socklen_t""... $ac_c" 1>&6
! echo "configure:2149: checking if getsockopt wants socklen_t" >&5
  cat > conftest.$ac_ext <<EOF
! #line 2151 "configure"
  #include "confdefs.h"
  #include <sys/types.h>
  #include <sys/socket.h>
***************
*** 2141,2147 ****
  rc = getsockopt(skt,SOL_SOCKET,SO_SNDBUF,ssz,&dummy);
  ; return 0; }
  EOF
! if { (eval echo configure:2145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    found_sockopt_type=1
  else
--- 2156,2162 ----
  rc = getsockopt(skt,SOL_SOCKET,SO_SNDBUF,ssz,&dummy);
  ; return 0; }
  EOF
! if { (eval echo configure:2160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    found_sockopt_type=1
  else
***************
*** 2160,2166 ****
      # This case is harder.  size_t is a valid type, but it may not be the 
      # one that getsockopt etc wants.
      echo $ac_n "checking if getsockopt wants size_t""... $ac_c" 1>&6
! echo "configure:2164: checking if getsockopt wants size_t" >&5
      
  found_sockopt_type=2
  if test -z "$pac_TRY_COMPLILE_CLEAN" ; then
--- 2175,2181 ----
      # This case is harder.  size_t is a valid type, but it may not be the 
      # one that getsockopt etc wants.
      echo $ac_n "checking if getsockopt wants size_t""... $ac_c" 1>&6
! echo "configure:2179: checking if getsockopt wants size_t" >&5
      
  found_sockopt_type=2
  if test -z "$pac_TRY_COMPLILE_CLEAN" ; then
Index: mpid/server/configure.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/mpid/server/configure.in,v
retrieving revision 1.13
retrieving revision 1.14
diff -c -r1.13 -r1.14
*** mpid/server/configure.in	2000/08/24 16:19:06	1.13
--- mpid/server/configure.in	2003/01/09 21:03:07	1.14
***************
*** 1,5 ****
  dnl
! dnl rcsid = $Header: /home/MPI/cvsMaster/mpich/mpid/server/configure.in,v 1.13 2000/08/24 16:19:06 gropp Exp $
  dnl
  dnl Caching is usually WRONG for systems with cross-mounted file systems
  dnl (the cache file may correspond to a different system).  Since configure
--- 1,5 ----
  dnl
! dnl rcsid = $Header: /home/MPI/cvsMaster/mpich/mpid/server/configure.in,v 1.14 2003/01/09 21:03:07 gropp Exp $
  dnl
  dnl Caching is usually WRONG for systems with cross-mounted file systems
  dnl (the cache file may correspond to a different system).  Since configure
***************
*** 44,50 ****
  dnl HAVE_SSL
  AC_CHECK_SSL
  dnl IWAY
! AC_ARG_ENABLE(IWAY, --enable-IWAY support IWAYl,AC_CHECK_IWAY)
  AC_CHECK_HEADERS(strings.h string.h)
  AC_CHECK_FUNCS(getopt)
  AC_CHECK_FUNCS(strerror)
--- 44,57 ----
  dnl HAVE_SSL
  AC_CHECK_SSL
  dnl IWAY
! AC_ARG_ENABLE(IWAY,[ --enable-IWAY support IWAYl],AC_CHECK_IWAY)
! AC_ARG_WITH(INCLUDE,
! [ --with-include=dirs - add dirs to the list of directories to search for
!  tools such as ssl ],,with_include=none)
! if test "$with_include" != "none" ; then
!     # This variable is used in the FIND_USER_INCLUDE command
!     USER_INCLUDE_DIRS="$with_include"
! fi
  AC_CHECK_HEADERS(strings.h string.h)
  AC_CHECK_FUNCS(getopt)
  AC_CHECK_FUNCS(strerror)
Index: romio/Makefile.in
===================================================================
RCS file: /home/MPI/cvsMaster/romio/Makefile.in,v
retrieving revision 1.24
retrieving revision 1.25
diff -c -r1.24 -r1.25
*** romio/Makefile.in	2002/11/20 14:05:49	1.24
--- romio/Makefile.in	2003/01/10 16:25:55	1.25
***************
*** 7,13 ****
  NOF77       = @NOF77@
  NOPROFILE   = @NOPROFILE@
  MPI         = @MPI@
! PREFIX      = @PREFIX@
  FROM_MPICH  = @FROM_MPICH@
  FROM_MPICH2  = @FROM_MPICH2@
  BUILD_MPI_INFO = @BUILD_MPI_INFO@
--- 7,13 ----
  NOF77       = @NOF77@
  NOPROFILE   = @NOPROFILE@
  MPI         = @MPI@
! PREFIX      = @prefix@
  FROM_MPICH  = @FROM_MPICH@
  FROM_MPICH2  = @FROM_MPICH2@
  BUILD_MPI_INFO = @BUILD_MPI_INFO@
Index: romio/configure
===================================================================
RCS file: /home/MPI/cvsMaster/romio/configure,v
retrieving revision 1.73
retrieving revision 1.78
diff -c -r1.73 -r1.78
*** romio/configure	2002/08/29 19:09:25	1.73
--- romio/configure	2003/01/13 21:55:58	1.78
***************
*** 256,262 ****
    -cflags=* | --cflags=*)
       package="`echo $arg|sed 's/-*cflags=//'`"
       USER_CFLAGS="$package"
!      CFLAGS="$CFLAGS $package" 
       ;;
    -fflags=* | --fflags=*)
       package="`echo $arg|sed 's/-*fflags=//'`"
--- 256,262 ----
    -cflags=* | --cflags=*)
       package="`echo $arg|sed 's/-*cflags=//'`"
       USER_CFLAGS="$package"
!      CFLAGS="$package $CFLAGS"
       ;;
    -fflags=* | --fflags=*)
       package="`echo $arg|sed 's/-*fflags=//'`"
***************
*** 2472,2483 ****
      
  {
  test -n "$verbose" && \
! echo "	defining" inline to be empty
! echo "#define" inline  >> confdefs.h
! DEFS="$DEFS -Dinline="
! SEDDEFS="${SEDDEFS}\${SEDdA}inline\${SEDdB}inline\${SEDdC}\${SEDdD}
! \${SEDuA}inline\${SEDuB}inline\${SEDuC}\${SEDuD}
! \${SEDeA}inline\${SEDeB}inline\${SEDeC}\${SEDeD}
  "
  }
  
--- 2472,2483 ----
      
  {
  test -n "$verbose" && \
! echo "	defining inline"
! echo "#define" inline 1 >> confdefs.h
! DEFS="$DEFS -Dinline=1"
! SEDDEFS="${SEDDEFS}\${SEDdA}inline\${SEDdB}inline\${SEDdC}1\${SEDdD}
! \${SEDuA}inline\${SEDuB}inline\${SEDuC}1\${SEDuD}
! \${SEDeA}inline\${SEDeB}inline\${SEDeC}1\${SEDeD}
  "
  }
  
***************
*** 3824,3829 ****
--- 3824,3830 ----
  #include "confdefs.h"
  
  #pragma weak PFoo = Foo
+ extern int PFoo(int);
  int Foo(a) { return a; }
  
  int main() { return 0; }
***************
*** 3879,3889 ****
--- 3880,3892 ----
  fi
      rm -f conftest*
      cat >>conftest1.c <<EOF
+ extern int PFoo(int);
  #pragma weak PFoo = Foo
  int Foo(int);
  int Foo(a) { return a; }
  EOF
      cat >>conftest2.c <<EOF
+ extern int PFoo(int);
  int main() {
  return PFoo(0);}
  EOF
Index: romio/configure.in
===================================================================
RCS file: /home/MPI/cvsMaster/romio/configure.in,v
retrieving revision 1.55
retrieving revision 1.57
diff -c -r1.55 -r1.57
*** romio/configure.in	2002/08/29 19:09:25	1.55
--- romio/configure.in	2003/01/13 21:55:57	1.57
***************
*** 260,266 ****
    -cflags=* | --cflags=*)
       package="`echo $arg|sed 's/-*cflags=//'`"
       USER_CFLAGS="$package"
!      CFLAGS="$CFLAGS $package" 
       ;;
    -fflags=* | --fflags=*)
       package="`echo $arg|sed 's/-*fflags=//'`"
--- 260,266 ----
    -cflags=* | --cflags=*)
       package="`echo $arg|sed 's/-*cflags=//'`"
       USER_CFLAGS="$package"
!      CFLAGS="$package $CFLAGS"
       ;;
    -fflags=* | --fflags=*)
       package="`echo $arg|sed 's/-*fflags=//'`"
***************
*** 1170,1175 ****
--- 1170,1176 ----
    AC_MSG_CHECKING(for weak symbol support)
    AC_TRY_LINK([
  #pragma weak PFoo = Foo
+ extern int PFoo(int);
  int Foo(a) { return a; }
  ],[return PFoo(1);],has_pragma_weak=1)
    #
***************
*** 1180,1190 ****
--- 1181,1193 ----
      AC_MSG_CHECKING([that weak symbols are visible to other files])
      rm -f conftest*
      cat >>conftest1.c <<EOF
+ extern int PFoo(int);
  #pragma weak PFoo = Foo
  int Foo(int);
  int Foo(a) { return a; }
  EOF
      cat >>conftest2.c <<EOF
+ extern int PFoo(int);
  int main() {
  return PFoo(0);}
  EOF
Index: romio/configure2.in
===================================================================
RCS file: /home/MPI/cvsMaster/romio/configure2.in,v
retrieving revision 1.14
retrieving revision 1.17
diff -c -r1.14 -r1.17
*** romio/configure2.in	2002/11/14 18:52:43	1.14
--- romio/configure2.in	2003/01/10 16:25:55	1.17
***************
*** 117,123 ****
  LIBNAME=""
  TEST_LIBNAME=""
  FILE_SYSTEM=""
- PREFIX=""
  DEBUG=no
  MIPS=0
  BITS=0
--- 117,122 ----
***************
*** 209,215 ****
       ;;
  esac
  done
- ]
  #
  AC_CONFIG_AUX_DIR(../../../confdb)
  dnl PAC_ARG_CACHING
--- 208,213 ----
***************
*** 262,273 ****
--- 260,277 ----
  #
  # check for valid file system
  if test -n "$FILE_SYSTEM" ; then
+    # if multiple filesystems are passed in, they are '+'-delimited
+    # we could set the IFS to tokenize FILE_SYSTEM, but the FILE_SYSTEM env var
+    # is used in multiple places in the build system: get rid of the '+'s so we
+    # can use the 'for x in $FILE_SYSTEM ...' idiom 
+    FILE_SYSTEM=`echo $FILE_SYSTEM|sed -e 's/\+/ /g'`
     for x in $FILE_SYSTEM
     do
        found=no
        for y in $known_filesystems ; do 
            if test $x = $y ; then
  	      found=yes
+ 	      eval "file_system_`echo $x`=1"
  	      break
  	  fi
        done
***************
*** 927,933 ****
  fi
  #
  # check if darray and subarray constructors are defined in the MPI implementation
! if test $FROM_MPICH = 0 -a $FROM_MPICH2 = 0 ; then
     PAC_MPI_DARRAY_SUBARRAY()
  else
     AC_DEFINE(HAVE_MPI_DARRAY_SUBARRAY,,[Define if Darray is available])
--- 931,937 ----
  fi
  #
  # check if darray and subarray constructors are defined in the MPI implementation
! if test $FROM_MPICH = 0 ; then
     PAC_MPI_DARRAY_SUBARRAY()
  else
     AC_DEFINE(HAVE_MPI_DARRAY_SUBARRAY,,[Define if Darray is available])
***************
*** 1098,1107 ****
      USER_FFLAGS="$USER_FFLAGS -bI:/usr/include/piofs/piofs.exp"
  fi
  if test -n "$mpi_mpich"; then
!    AC_DEFINE(NEEDS_MPI_TEST,,[Define if mpi_test needed])
!    AC_DEFINE(MPICH,,[Define if using MPICH])
!    if test -z "$arch_SX4" ; then
!       MPIOF_H_INCLUDED=1
     fi
  fi
  if test -n "$mpi_sgi"; then
--- 1102,1113 ----
      USER_FFLAGS="$USER_FFLAGS -bI:/usr/include/piofs/piofs.exp"
  fi
  if test -n "$mpi_mpich"; then
!    if test "$FROM_MPICH2" = 0; then
!       AC_DEFINE(NEEDS_MPI_TEST,,[Define if mpi_test needed])
!       AC_DEFINE(MPICH,,[Define if using MPICH])
!       if test -z "$arch_SX4" ; then
!          MPIOF_H_INCLUDED=1
!       fi
     fi
  fi
  if test -n "$mpi_sgi"; then
***************
*** 1184,1195 ****
  # For now, separate the mpich2 from mpich cases
  if test $FROM_MPICH2 = 1 ; then
     MPICH_HOME=`dirname $ROMIO_HOME`
     if test -z "$MPI_BIN_DIR" ; then MPI_BIN_DIR=$MPICH_HOME/bin ; fi
     # No special compiler script.
     # BUT we need the include paths
     CC="$CC -I${use_top_srcdir}/src/include -I${top_build_dir}/src/include"
     TEST_CC="$CC"
!    MPI_LIB=""
     ROMIO_INCLUDE=""
     USER_CFLAGS=""
     USER_FFLAGS=""
--- 1190,1203 ----
  # For now, separate the mpich2 from mpich cases
  if test $FROM_MPICH2 = 1 ; then
     MPICH_HOME=`dirname $ROMIO_HOME`
+    MPICH_HOME=`dirname $MPICH_HOME`
+    MPICH_HOME=`dirname $MPICH_HOME`
     if test -z "$MPI_BIN_DIR" ; then MPI_BIN_DIR=$MPICH_HOME/bin ; fi
     # No special compiler script.
     # BUT we need the include paths
     CC="$CC -I${use_top_srcdir}/src/include -I${top_build_dir}/src/include"
     TEST_CC="$CC"
!    MPI_LIB="$LIBNAME"
     ROMIO_INCLUDE=""
     USER_CFLAGS=""
     USER_FFLAGS=""
***************
*** 1238,1244 ****
  AC_SUBST(NOF77)
  AC_SUBST(NOPROFILE)
  AC_SUBST(MAKE)
- AC_SUBST(PREFIX)
  AC_SUBST(arch_IRIX)
  AC_SUBST(ROMIO_HOME)
  AC_SUBST(LIBNAME)
--- 1246,1251 ----
***************
*** 1316,1321 ****
--- 1323,1338 ----
  as well as bug fixes.
  
  EOF
+ fi
+ if test $FROM_MPICH2 = 1 -a "$NOF77" = 0 ; then
+       sed 5d test/fcoll_test.f > test/tmp
+       mv test/tmp test/fcoll_test.f
+       sed 5d test/pfcoll_test.f > test/tmp
+       mv test/tmp test/fcoll_test.f
+       sed 5d test/fperf.f > test/tmp
+       mv test/tmp test/fperf.f
+       sed 5d test/fmisc.f > test/tmp
+       mv test/tmp test/fmisc.f
  fi
  if test $FROM_MPICH = 0 -a $FROM_MPICH2 = 0 ; then
     AC_MSG_RESULT([Configure done. Now type make])
Index: romio/adio/common/flatten.c
===================================================================
RCS file: /home/MPI/cvsMaster/romio/adio/common/flatten.c,v
retrieving revision 1.7
retrieving revision 1.9
diff -c -r1.7 -r1.9
*** romio/adio/common/flatten.c	2002/10/24 17:01:14	1.7
--- romio/adio/common/flatten.c	2003/01/08 19:31:22	1.9
***************
*** 1,6 ****
  /* -*- Mode: C; c-basic-offset:4 ; -*- */
  /* 
!  *   $Id: flatten.c,v 1.7 2002/10/24 17:01:14 gropp Exp $    
   *
   *   Copyright (C) 1997 University of Chicago. 
   *   See COPYRIGHT notice in top-level directory.
--- 1,6 ----
  /* -*- Mode: C; c-basic-offset:4 ; -*- */
  /* 
!  *   $Id: flatten.c,v 1.9 2003/01/08 19:31:22 thakur Exp $    
   *
   *   Copyright (C) 1997 University of Chicago. 
   *   See COPYRIGHT notice in top-level directory.
***************
*** 91,96 ****
--- 91,105 ----
      MPI_Type_get_contents(datatype, nints, nadds, ntypes, ints, adds, types);
  
      switch (combiner) {
+ #ifdef MPICH2
+     case MPI_COMBINER_DUP:
+         MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
+ 			      &old_ntypes, &old_combiner); 
+         ADIOI_Datatype_iscontig(types[0], &old_is_contig);
+ 	if ((old_combiner != MPI_COMBINER_NAMED) && (!old_is_contig))
+             ADIOI_Flatten(types[0], flat, st_offset, curr_index);
+         break;
+ #endif
      case MPI_COMBINER_CONTIGUOUS:
  	top_count = ints[0];
          MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
***************
*** 437,442 ****
--- 446,461 ----
      MPI_Type_get_contents(datatype, nints, nadds, ntypes, ints, adds, types);
  
      switch (combiner) {
+ #ifdef MPICH2
+     case MPI_COMBINER_DUP:
+         MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
+                               &old_ntypes, &old_combiner); 
+ 	ADIOI_Datatype_iscontig(types[0], &old_is_contig);
+ 	if ((old_combiner != MPI_COMBINER_NAMED) && (!old_is_contig))
+ 	    count = ADIOI_Count_contiguous_blocks(types[0], curr_index);
+ 	else count = 1;
+         break;
+ #endif
      case MPI_COMBINER_CONTIGUOUS:
          top_count = ints[0];
          MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
Index: romio/adio/common/iscontig.c
===================================================================
RCS file: /home/MPI/cvsMaster/romio/adio/common/iscontig.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -c -r1.6 -r1.7
*** romio/adio/common/iscontig.c	2002/11/16 20:27:46	1.6
--- romio/adio/common/iscontig.c	2003/01/07 21:31:16	1.7
***************
*** 1,6 ****
  /* -*- Mode: C; c-basic-offset:4 ; -*- */
  /* 
!  *   $Id: iscontig.c,v 1.6 2002/11/16 20:27:46 gropp Exp $    
   *
   *   Copyright (C) 1997 University of Chicago. 
   *   See COPYRIGHT notice in top-level directory.
--- 1,6 ----
  /* -*- Mode: C; c-basic-offset:4 ; -*- */
  /* 
!  *   $Id: iscontig.c,v 1.7 2003/01/07 21:31:16 thakur Exp $    
   *
   *   Copyright (C) 1997 University of Chicago. 
   *   See COPYRIGHT notice in top-level directory.
***************
*** 11,17 ****
  #include "mpisgi2.h"
  #endif
  
! #if defined(MPICH)
  /* MPICH2 also provides this routine */
  void MPIR_Datatype_iscontig(MPI_Datatype datatype, int *flag);
  
--- 11,17 ----
  #include "mpisgi2.h"
  #endif
  
! #if (defined(MPICH) || defined(MPICH2))
  /* MPICH2 also provides this routine */
  void MPIR_Datatype_iscontig(MPI_Datatype datatype, int *flag);
  
Index: romio/adio/include/mpipr.h
===================================================================
RCS file: /home/MPI/cvsMaster/romio/adio/include/mpipr.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -c -r1.5 -r1.6
*** romio/adio/include/mpipr.h	2002/11/15 16:26:23	1.5
--- romio/adio/include/mpipr.h	2003/01/07 21:31:22	1.6
***************
*** 1,5 ****
  /* -*- Mode: C; c-basic-offset:4 ; -*- */
! /*  $Id: mpipr.h,v 1.5 2002/11/15 16:26:23 gropp Exp $
   *
   *  (C) 2001 by Argonne National Laboratory.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /* -*- Mode: C; c-basic-offset:4 ; -*- */
! /*  $Id: mpipr.h,v 1.6 2003/01/07 21:31:22 thakur Exp $
   *
   *  (C) 2001 by Argonne National Laboratory.
   *      See COPYRIGHT in top-level directory.
***************
*** 331,342 ****
  #define MPI_Win_c2f PMPI_Win_c2f
  #undef MPI_Win_f2c
  #define MPI_Win_f2c PMPI_Win_f2c
  #undef MPI_Status_c2f
  #define MPI_Status_c2f PMPI_Status_c2f
  #undef MPI_Status_f2c
  #define MPI_Status_f2c PMPI_Status_f2c
- */
  
  #ifndef MPI_INFO_SRC  /* everywhere except in info source directory */
  #undef MPI_Info_create
  #define MPI_Info_create PMPI_Info_create
--- 331,343 ----
  #define MPI_Win_c2f PMPI_Win_c2f
  #undef MPI_Win_f2c
  #define MPI_Win_f2c PMPI_Win_f2c
+ */
  #undef MPI_Status_c2f
  #define MPI_Status_c2f PMPI_Status_c2f
  #undef MPI_Status_f2c
  #define MPI_Status_f2c PMPI_Status_f2c
  
+ 
  #ifndef MPI_INFO_SRC  /* everywhere except in info source directory */
  #undef MPI_Info_create
  #define MPI_Info_create PMPI_Info_create
***************
*** 356,365 ****
  #define MPI_Info_dup PMPI_Info_dup
  #undef MPI_Info_free
  #define MPI_Info_free PMPI_Info_free
! #undef MPI_Info_c2f
  #define MPI_Info_c2f PMPI_Info_c2f
  #undef MPI_Info_f2c
  #define MPI_Info_f2c PMPI_Info_f2c
  #endif
  
  #ifdef MPIO_FORTRAN_SRC   /* only in MPI-IO Fortran source directory */
--- 357,367 ----
  #define MPI_Info_dup PMPI_Info_dup
  #undef MPI_Info_free
  #define MPI_Info_free PMPI_Info_free
! /* #undef MPI_Info_c2f
  #define MPI_Info_c2f PMPI_Info_c2f
  #undef MPI_Info_f2c
  #define MPI_Info_f2c PMPI_Info_f2c
+ */
  #endif
  
  #ifdef MPIO_FORTRAN_SRC   /* only in MPI-IO Fortran source directory */
Index: romio/test/Makefile.in
===================================================================
RCS file: /home/MPI/cvsMaster/romio/test/Makefile.in,v
retrieving revision 1.17
retrieving revision 1.19
diff -c -r1.17 -r1.19
*** romio/test/Makefile.in	2002/12/19 20:20:35	1.17
--- romio/test/Makefile.in	2003/01/13 15:06:50	1.19
***************
*** 1,7 ****
  CC = @TEST_CC@
  F77 = @TEST_F77@
  INCLUDE_DIR = @ROMIO_INCLUDE@
! LIBS = @TEST_LIBNAME@ @MPI_LIB@
  USER_CFLAGS = @USER_CFLAGS@ $(INCLUDE_DIR)
  USER_FFLAGS = @USER_FFLAGS@ $(INCLUDE_DIR)
  srcdir=@srcdir@
--- 1,7 ----
  CC = @TEST_CC@
  F77 = @TEST_F77@
  INCLUDE_DIR = @ROMIO_INCLUDE@
! LIBS = @TEST_LIBNAME@ @MPI_LIB@ ${LDFLAGS} ${LIBS}
  USER_CFLAGS = @USER_CFLAGS@ $(INCLUDE_DIR)
  USER_FFLAGS = @USER_FFLAGS@ $(INCLUDE_DIR)
  srcdir=@srcdir@
Index: romio/test/noncontig_coll2.c
===================================================================
RCS file: /home/MPI/cvsMaster/romio/test/noncontig_coll2.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -c -r1.5 -r1.6
*** romio/test/noncontig_coll2.c	2003/01/02 23:32:27	1.5
--- romio/test/noncontig_coll2.c	2003/01/08 16:53:40	1.6
***************
*** 243,249 ****
  	}
  	/* chop off that last comma */
  	dest[strlen(dest) - 1] = '\0';
! 	MPI_Bcast(dest, len+1, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  void reverse_str(int mynod, int len, ADIO_cb_name_array array, char *dest) 
  {
--- 243,249 ----
  	}
  	/* chop off that last comma */
  	dest[strlen(dest) - 1] = '\0';
! 	MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  void reverse_str(int mynod, int len, ADIO_cb_name_array array, char *dest) 
  {
***************
*** 257,263 ****
  	    }
  	}
  	dest[strlen(dest) - 1] = '\0';
! 	MPI_Bcast(dest, len+1, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  
  void reverse_alternating_str(int mynod, int len, ADIO_cb_name_array array, char *dest)
--- 257,263 ----
  	    }
  	}
  	dest[strlen(dest) - 1] = '\0';
! 	MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  
  void reverse_alternating_str(int mynod, int len, ADIO_cb_name_array array, char *dest)
***************
*** 278,284 ****
  	    }
      }
  	dest[strlen(dest) - 1] = '\0';
!     MPI_Bcast(dest, len+1, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  
  void simple_shuffle_str(int mynod, int len, ADIO_cb_name_array array, char *dest)
--- 278,284 ----
  	    }
      }
  	dest[strlen(dest) - 1] = '\0';
!     MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  
  void simple_shuffle_str(int mynod, int len, ADIO_cb_name_array array, char *dest)
***************
*** 297,303 ****
  	    }
  	}
  	dest[strlen(dest) - 1] = '\0';
! 	MPI_Bcast(dest, len+1, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  
  int main(int argc, char **argv)
--- 297,303 ----
  	    }
  	}
  	dest[strlen(dest) - 1] = '\0';
! 	MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD);
  }
  
  int main(int argc, char **argv)
***************
*** 356,361 ****
--- 356,362 ----
  		    /* +1: space for either a , or \0 if last */
  		    cb_config_len += strlen(array->names[i]) + 1;
  	    }
+ 	    ++cb_config_len;
      }
      MPI_Bcast(&cb_config_len, 1, MPI_INT, 0, MPI_COMM_WORLD);
      if ( (cb_config_string = malloc(cb_config_len)) == NULL ) {
Index: romio/util/romioinstall.in
===================================================================
RCS file: /home/MPI/cvsMaster/romio/util/romioinstall.in,v
retrieving revision 1.8
retrieving revision 1.9
diff -c -r1.8 -r1.9
*** romio/util/romioinstall.in	2001/07/13 12:59:29	1.8
--- romio/util/romioinstall.in	2003/01/10 16:23:33	1.9
***************
*** 11,17 ****
  #
  # in the top-level romio directory
  #
! PREFIX=@PREFIX@
  ROMIO_HOME=@ROMIO_HOME@
  ARCH=@ARCH@
  RANLIB=@RANLIB@
--- 11,17 ----
  #
  # in the top-level romio directory
  #
! PREFIX=@prefix@
  ROMIO_HOME=@ROMIO_HOME@
  ARCH=@ARCH@
  RANLIB=@RANLIB@
***************
*** 38,43 ****
--- 38,44 ----
  MODE=0644
  XMODE=0755
  replace=1
+ verbose=0
  
  # Shell procedures to copy files and create directories
  #
***************
*** 46,51 ****
--- 47,55 ----
  # replace #...# and @...@ in files
  CP=cp
  #
+ MkDir() {
+ 	if [ ! -e $1 ]; then mkdir $1 ; fi
+ }
  CopyFile() {
  if [ -z "$3" ] ; then
      mode=$MODE
***************
*** 125,130 ****
--- 129,135 ----
  # Uninstall filename
  if [ -z "$UNINSTALLFILE" ] ; then 
      UNINSTALLFILE="$sbindir/romiouninstall"
+     MkDir `dirname $UNINSTALLFILE`
  fi
  
  # LAM top-level switch to install or uninstall
***************
*** 139,145 ****
      MkDir $docdir
      for file in COPYRIGHT README users-guide.ps.gz ; do
  	CopyFile $ROMIO_HOME/$file $docdir
!     fi
  
      echo "copying directory include to $includedir"
      MkDir $includedir
--- 144,150 ----
      MkDir $docdir
      for file in COPYRIGHT README users-guide.ps.gz ; do
  	CopyFile $ROMIO_HOME/$file $docdir
!     done
  
      echo "copying directory include to $includedir"
      MkDir $includedir
Index: src/fortran/src/mpif77.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/fortran/src/mpif77.in,v
retrieving revision 1.20
retrieving revision 1.21
diff -c -r1.20 -r1.21
*** src/fortran/src/mpif77.in	2002/12/02 23:23:25	1.20
--- src/fortran/src/mpif77.in	2003/01/09 21:54:19	1.21
***************
*** 339,345 ****
      # See the comment in mpicc about UseSharedLib
      # Also, don't use if the shared libraries don't exist yet
      # (because -lmpichfarg.a won't exist yet)
!     if [ "$SHAREDKIND" != "ignore" -a $UseSharedLib = "yes" -a \
  	-s ${libdir}/lib${FLIBNAME}farg.a ] ; then
  	# We also add a library containing MPI_Init and the routines
          # that it uses to call getarg/iarg.  
--- 339,349 ----
      # See the comment in mpicc about UseSharedLib
      # Also, don't use if the shared libraries don't exist yet
      # (because -lmpichfarg.a won't exist yet)
!     # ALSO, if sharedlibdir is the same as libdir, we must also add the
!     # farg support library, since the linker is likely to prefer the 
!     # shared library to the unshared one.
!     if [ "$SHAREDKIND" != "ignore" -a \
!         \( $UseSharedLib = "yes" -o "$sharedlibdir" = "$libdir" \) -a \
  	-s ${libdir}/lib${FLIBNAME}farg.a ] ; then
  	# We also add a library containing MPI_Init and the routines
          # that it uses to call getarg/iarg.  
Index: src/pt2pt/test.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/test.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -c -r1.9 -r1.10
*** src/pt2pt/test.c	2002/03/15 18:51:55	1.9
--- src/pt2pt/test.c	2003/01/09 20:48:41	1.10
***************
*** 1,5 ****
  /*
!  *  $Id: test.c,v 1.9 2002/03/15 18:51:55 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: test.c,v 1.10 2003/01/09 20:48:41 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 34,40 ****
  
  Output Parameter:
  + flag - true if operation completed (logical) 
! - status - status object (Status).  May be 'MPI_STATUS_NULL'.
  
  .N waitstatus
  
--- 34,40 ----
  
  Output Parameter:
  + flag - true if operation completed (logical) 
! - status - status object (Status).  May be 'MPI_STATUS_IGNORE'.
  
  .N waitstatus
  
Index: src/pt2pt/testall.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/testall.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -c -r1.25 -r1.26
*** src/pt2pt/testall.c	2002/03/15 18:51:55	1.25
--- src/pt2pt/testall.c	2003/01/09 20:48:41	1.26
***************
*** 1,5 ****
  /*
!  *  $Id: testall.c,v 1.25 2002/03/15 18:51:55 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: testall.c,v 1.26 2003/01/09 20:48:41 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 38,44 ****
  Output Parameters:
  + flag - (logical) 
  - array_of_statuses - array of status objects (array of Status).  May be
!  'MPI_STATUSES_NULL'.
  
  Notes:
    'flag' is true only if all requests have completed.  Otherwise, flag is
--- 38,44 ----
  Output Parameters:
  + flag - (logical) 
  - array_of_statuses - array of status objects (array of Status).  May be
!  'MPI_STATUSES_IGNORE'.
  
  Notes:
    'flag' is true only if all requests have completed.  Otherwise, flag is
Index: src/pt2pt/testany.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/testany.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -c -r1.18 -r1.19
*** src/pt2pt/testany.c	2002/03/15 15:21:16	1.18
--- src/pt2pt/testany.c	2003/01/09 20:48:41	1.19
***************
*** 1,5 ****
  /*
!  *  $Id: testany.c,v 1.18 2002/03/15 15:21:16 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: testany.c,v 1.19 2003/01/09 20:48:41 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 45,51 ****
  + index - index of operation that completed, or 'MPI_UNDEFINED'  if none 
    completed (integer) 
  . flag - true if one of the operations is complete (logical) 
! - status - status object (Status).  May be 'MPI_STATUS_NULL'.
  
  .N waitstatus
  
--- 45,51 ----
  + index - index of operation that completed, or 'MPI_UNDEFINED'  if none 
    completed (integer) 
  . flag - true if one of the operations is complete (logical) 
! - status - status object (Status).  May be 'MPI_STATUS_IGNORE'.
  
  .N waitstatus
  
Index: src/pt2pt/testsome.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/testsome.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -c -r1.13 -r1.14
*** src/pt2pt/testsome.c	2002/03/15 15:21:16	1.13
--- src/pt2pt/testsome.c	2003/01/09 20:48:41	1.14
***************
*** 1,5 ****
  /*
!  *  $Id: testsome.c,v 1.13 2002/03/15 15:21:16 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: testsome.c,v 1.14 2003/01/09 20:48:41 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 40,46 ****
  . array_of_indices - array of indices of operations that 
  completed (array of integers) 
  - array_of_statuses - array of status objects for 
!     operations that completed (array of Status).  May be 'MPI_STATUSES_NULL'.
  
  .N waitstatus
  
--- 40,46 ----
  . array_of_indices - array of indices of operations that 
  completed (array of integers) 
  - array_of_statuses - array of status objects for 
!     operations that completed (array of Status).  May be 'MPI_STATUSES_IGNORE'.
  
  .N waitstatus
  
Index: src/pt2pt/wait.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/wait.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -c -r1.8 -r1.9
*** src/pt2pt/wait.c	2002/03/15 18:51:55	1.8
--- src/pt2pt/wait.c	2003/01/09 20:48:42	1.9
***************
*** 1,5 ****
  /*
!  *  $Id: wait.c,v 1.8 2002/03/15 18:51:55 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: wait.c,v 1.9 2003/01/09 20:48:42 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 34,40 ****
  . request - request (handle) 
  
  Output Parameter:
! . status - status object (Status) .  May be 'MPI_STATUS_NULL'.
  
  .N waitstatus
  
--- 34,40 ----
  . request - request (handle) 
  
  Output Parameter:
! . status - status object (Status) .  May be 'MPI_STATUS_IGNORE'.
  
  .N waitstatus
  
Index: src/pt2pt/waitall.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/waitall.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -c -r1.23 -r1.24
*** src/pt2pt/waitall.c	2002/11/27 19:58:17	1.23
--- src/pt2pt/waitall.c	2003/01/09 20:48:42	1.24
***************
*** 1,5 ****
  /*
!  *  $Id: waitall.c,v 1.23 2002/11/27 19:58:17 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: waitall.c,v 1.24 2003/01/09 20:48:42 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 37,43 ****
  
  Output Parameter:
  . array_of_statuses - array of status objects (array of Status).  May be
!   'MPI_STATUSES_NULL'
  
  .N waitstatus
  
--- 37,43 ----
  
  Output Parameter:
  . array_of_statuses - array of status objects (array of Status).  May be
!   'MPI_STATUSES_IGNORE'
  
  .N waitstatus
  
Index: src/pt2pt/waitany.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/waitany.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -c -r1.19 -r1.20
*** src/pt2pt/waitany.c	2002/11/27 19:58:17	1.19
--- src/pt2pt/waitany.c	2003/01/09 20:48:42	1.20
***************
*** 1,5 ****
  /*
!  *  $Id: waitany.c,v 1.19 2002/11/27 19:58:17 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: waitany.c,v 1.20 2003/01/09 20:48:42 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 42,48 ****
  Output Parameters:
  + index - index of handle for operation that completed (integer).  In the
  range '0' to 'count-1'.  In Fortran, the range is '1' to 'count'.
! - status - status object (Status).  May be 'MPI_STATUS_NULL'.
  
  Notes:
  If all of the requests are 'MPI_REQUEST_NULL', then 'index' is returned as 
--- 42,48 ----
  Output Parameters:
  + index - index of handle for operation that completed (integer).  In the
  range '0' to 'count-1'.  In Fortran, the range is '1' to 'count'.
! - status - status object (Status).  May be 'MPI_STATUS_IGNORE'.
  
  Notes:
  If all of the requests are 'MPI_REQUEST_NULL', then 'index' is returned as 
Index: src/pt2pt/waitsome.c
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/src/pt2pt/waitsome.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -c -r1.13 -r1.14
*** src/pt2pt/waitsome.c	2002/03/15 15:21:18	1.13
--- src/pt2pt/waitsome.c	2003/01/09 20:48:42	1.14
***************
*** 1,5 ****
  /*
!  *  $Id: waitsome.c,v 1.13 2002/03/15 15:21:18 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
--- 1,5 ----
  /*
!  *  $Id: waitsome.c,v 1.14 2003/01/09 20:48:42 gropp Exp $
   *
   *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
   *      See COPYRIGHT in top-level directory.
***************
*** 40,46 ****
  . array_of_indices - array of indices of operations that 
  completed (array of integers) 
  - array_of_statuses - array of status objects for 
!     operations that completed (array of Status).  May be 'MPI_STATUSES_NULL'.
  
  Notes:
    The array of indicies are in the range '0' to 'incount - 1' for C and 
--- 40,46 ----
  . array_of_indices - array of indices of operations that 
  completed (array of integers) 
  - array_of_statuses - array of status objects for 
!     operations that completed (array of Status).  May be 'MPI_STATUSES_IGNORE'.
  
  Notes:
    The array of indicies are in the range '0' to 'incount - 1' for C and 
Index: util/findnosuccess2
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/util/findnosuccess2,v
retrieving revision 1.31
retrieving revision 1.32
diff -c -r1.31 -r1.32
*** util/findnosuccess2	2003/01/03 22:12:29	1.31
--- util/findnosuccess2	2003/01/09 20:48:56	1.32
***************
*** 90,95 ****
--- 90,96 ----
                     '^added manifest', # java message
  		   'Note: Some input files use', # java message
  		   'Note: Recompile with -deprecation', # java message
+ 		   'Warning: JIT compiler', # java message
  		   '^[-\/A-Za-z0-9\._]*:\s*$', # icc echos file name!
   );
  # pgCC echos file name!
Index: util/mpicc.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/util/mpicc.in,v
retrieving revision 1.43
retrieving revision 1.44
diff -c -r1.43 -r1.44
*** util/mpicc.in	2002/12/02 23:23:24	1.43
--- util/mpicc.in	2003/01/09 21:54:20	1.44
***************
*** 351,357 ****
      # Since that enviroment variable would then need to be set for all
      # hosts where the program might run (since rsh doesn't propagate 
      # the environment), we don't make this the default.
!     if [ "${SHAREDKIND}" != "ignore" -a $UseSharedLib = "yes" ] ; then
  	clibpath="-L${sharedlibdir}"
          if [ -n "${SHARED_LIB_SEARCH_PATH_LEADER}" ] ; then
  	    clibpath="${SHARED_LIB_SEARCH_PATH_LEADER}${sharedlibdir} $clibpath"
--- 351,358 ----
      # Since that enviroment variable would then need to be set for all
      # hosts where the program might run (since rsh doesn't propagate 
      # the environment), we don't make this the default.
!     if [ "${SHAREDKIND}" != "ignore" -a \
!         \( $UseSharedLib = "yes" -o "$libdir" = "$sharedlibdir" \) ] ; then
  	clibpath="-L${sharedlibdir}"
          if [ -n "${SHARED_LIB_SEARCH_PATH_LEADER}" ] ; then
  	    clibpath="${SHARED_LIB_SEARCH_PATH_LEADER}${sharedlibdir} $clibpath"
Index: util/mpich-scyld.spec
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/util/mpich-scyld.spec,v
retrieving revision 1.4
retrieving revision 1.5
diff -c -r1.4 -r1.5
*** util/mpich-scyld.spec	2003/01/05 14:54:17	1.4
--- util/mpich-scyld.spec	2003/01/07 21:32:55	1.5
***************
*** 242,246 ****
--- 242,248 ----
  /usr/man/man4/*
  
  %changelog
+ * Sat Jan  4 2003 William Gropp <gropp@mcs.anl.gov>
+ - Update for 1.2.5 version number.
  * Thu Apr 26 2001 Frederick (Rick) A Niles <niles@scyld.com>
  - Initial version
Index: util/mpich.spec
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/util/mpich.spec,v
retrieving revision 1.3
retrieving revision 1.9
diff -c -r1.3 -r1.9
*** util/mpich.spec	2003/01/05 14:54:17	1.3
--- util/mpich.spec	2003/01/13 22:19:18	1.9
***************
*** 3,10 ****
  Version: 1.2.5
  Vendor: Argonne National Laboratory
  Packager: William Gropp <gropp@mcs.anl.gov>
! Copyright: BSD
  Group: System Environment/Libraries 
  #
  # This spec file was inspired by spec files created by others for MPICH,
  # including the Scyld version, written by Frederick (Rick) Niles of Scyld, and 
--- 3,11 ----
  Version: 1.2.5
  Vendor: Argonne National Laboratory
  Packager: William Gropp <gropp@mcs.anl.gov>
! Copyright: BSD-like
  Group: System Environment/Libraries 
+ URL: http://www.mcs.anl.gov/mpi/mpich/
  #
  # This spec file was inspired by spec files created by others for MPICH,
  # including the Scyld version, written by Frederick (Rick) Niles of Scyld, and 
***************
*** 12,18 ****
  #
  # Construct the source RPM with
  #  mkdir ...
! #  rpm mpich.spec ....
  # This spec file requires a suitably recent version of RPM. Is there an
  # RPM version tag that we should set?
  
--- 13,19 ----
  #
  # Construct the source RPM with
  #  mkdir ...
! #  rpm -ba mpich.spec ....
  # This spec file requires a suitably recent version of RPM. Is there an
  # RPM version tag that we should set?
  
***************
*** 35,40 ****
--- 36,43 ----
  # clusters of SMPs.  
  %define device ch_p4mpd
  %define other_device_opts %{nil}
+ # (warning: you cannot comment out a macro definition because they
+ # are apparently evaluated *before* comment processing (!!!)
  # for ch_p4:
  # define device ch_p4
  # define other_device_opts -comm=shared
***************
*** 53,61 ****
--- 56,81 ----
  # Define this to +pvfs if pvfs is available.
  %define other_file_systems %{nil}
  
+ #
+ # Define any other options for configure.  For example, 
+ # Turn off mpe
+ # define other_config_opts --without-mpe
+ # Turn off building the logfile viewers
+ # define other_config_opts -mpe-opts=--disable-viewers
+ %define other_config_opts %{nil}
+ 
+ #
+ # Define the release value; this will be used, along with the compiler
+ # choice, to specify an actual Release name
  %define rel 1
  
  #
+ # Set update_paths to 1 when building an RPM for distribution.  Set it
+ # to 0 when building a test RPM that you want to tryout when a BUILDRROOT
+ # is specified (if update_paths is 1, then the MPICH commands that need
+ # to know the file locations are edited to remove the BUILDROOT).
+ %define update_paths 1
+ #
  # These definitions are approximate.  They are taken in part from the
  # mpich-scyld.spec file, though the choices here rely more on the MPICH
  # configure to find the correct options for the compilers.  Not all have
***************
*** 116,142 ****
  %endif
  
  Release: %{release}
! Source0: ftp://ftp.mcs.anl.gov/pub/mpi/%{name}-%{version}.tar.gz
  Buildroot: %{_tmppath}/%{name}-root
  #BuildRequires: %{c_compiler}
  Provides: libmpich.so.1
  
  %define prefixdir   %{?buildroot:%{buildroot}}%{_prefix}
! %define sharedir %{?buildroot:%{buildroot}}%{_datadir}/%{name}
! %define libdir   %{?buildroot:%{buildroot}}%{_libdir}/%{name}
! %define mandir   %{?buildroot:%{buildroot}}%{_mandir}
! 
! %package devel
! Summary: Static libraries and header files for MPI.
! Group: Development/Libraries 
! PreReq: %{name} = %{version}
! 
! %description devel
! Static libraries and header files for MPI.
! 
! %description
! An implementation of the Message-Passing Interface (MPI) by Argonne
! National Laboratory. 
  
  %prep
  %setup -q -n mpich-%{version}
--- 136,201 ----
  %endif
  
  Release: %{release}
! Source0: ftp://ftp.mcs.anl.gov/pub/mpi/%{name}-%{version}-1.tar.gz
  Buildroot: %{_tmppath}/%{name}-root
  #BuildRequires: %{c_compiler}
  Provides: libmpich.so.1
  
+ # Define alternate root directories for installation here
+ %define _prefix /usr/local/cca
+ %define _mandir /usr/local/cca/man
+ %define _docdir /usr/local/cca/doc
+ 
+ %define fullname %{name}-%{version}
+ 
+ # These directories are defined in terms of the above directories (-prefix 
+ # and _mandir)  
+ %define _webdir %{_prefix}/%{fullname}/www
+ 
+ #
+ # If these are changed, make sure that you change the directories selected 
+ # under the files step.
+ 
  %define prefixdir   %{?buildroot:%{buildroot}}%{_prefix}
! %define sharedir %{?buildroot:%{buildroot}}%{_datadir}/%{fullname}
! %define libdir   %{?buildroot:%{buildroot}}%{_libdir}/%{fullname}
! 
! # Choose whether the man pages go into a common directory or an mpich one
! # define mandir   %{?buildroot:%{buildroot}}%{_mandir}
! %define mandir   %{?buildroot:%{buildroot}}%{_mandir}/%{fullname}
! 
! %define exec_prefix %{?buildroot:%{buildroot}}%{_exec_prefix}/%{fullname}
! %define bindir %{?buildroot:%{buildroot}}%{_bindir}
! %define sbindir %{?buildroot:%{buildroot}}%{_sbindir}
! %define datadir %{?buildroot:%{buildroot}}%{_datadir}
! %define docdir %{?buildroot:%{buildroot}}%{_docdir}
! 
! # Choose whether you want all .h files in a common include dir or one
! # with the mpich name in it
! # define includedir %{?buildroot:%{buildroot}}%{_includedir}
! %define includedir %{?buildroot:%{buildroot}}%{_includedir}/%{fullname}
! 
! %define sharedstatedir %{?buildroot:%{buildroot}}%{_sharedstatedir}
! %define webdir %{?buildroot:%{buildroot}}%{_webdir}
! 
! #package devel
! #Summary: Static libraries and header files for MPI.
! #Group: Development/Libraries 
! #PreReq: %{name} = %{version}
! 
! #description devel
! #Static libraries and header files for MPI.
! 
! %description 
! MPICH is an open-source and portable implementation of the Message-Passing
! Interface (MPI, www.mpi-forum.org).  MPI is a library for parallel programming,
! and is available on a wide range of parallel machines, from single laptops to
! massively parallel vector parallel processors.  
! MPICH includes all of the routines in MPI 1.2, along with the I/O routines
! from MPI-2 and some additional routines from MPI-2, including those supporting
! MPI Info and some of the additional datatype constructors.  MPICH  was
! developed by Argonne National Laboratory. See www.mcs.anl.gov/mpi/mpich for
! more information.
  
  %prep
  %setup -q -n mpich-%{version}
***************
*** 154,169 ****
  %build
  %setenvs
  ./configure --prefix=%{prefixdir} \
!         --exec-prefix=%{_exec_prefix} \
!         --bindir=%{_bindir} \
! 	--sbindir=%{_sbindir} \
!         --datadir=%{_datadir}/mpich/ \
!         --includedir=%{_includedir} \
  	--libdir=%{libdir} \
!         --sharedstatedir=%{_sharedstatedir} \
          --mandir=%{mandir} \
          --with-device=%{device} --enable-sharedlib=%{libdir} \
!         %{other_device_opts} \
          --with-romio=--file_system=nfs+ufs%{other_file_systems}
          
  %{__make}
--- 213,230 ----
  %build
  %setenvs
  ./configure --prefix=%{prefixdir} \
!         --exec-prefix=%{exec_prefix} \
!         --bindir=%{bindir} \
! 	--sbindir=%{sbindir} \
!         --datadir=%{datadir}/%{fullname}/ \
!         --includedir=%{includedir} \
  	--libdir=%{libdir} \
! 	--docdir=%{docdir} \
!         --sharedstatedir=%{sharedstatedir} \
          --mandir=%{mandir} \
+ 	--wwwdir=%{webdir} \
          --with-device=%{device} --enable-sharedlib=%{libdir} \
!         %{other_device_opts} %{other_config_opts} \
          --with-romio=--file_system=nfs+ufs%{other_file_systems}
          
  %{__make}
***************
*** 184,189 ****
--- 245,251 ----
  rm -f %{sharedir}/examples/mpirun
  
  # Fix the paths in the shell scripts
+ if [ %{update_paths} = 1 ] ; then
  for i in `find %{sharedir} %{prefixdir}/bin -type f`
   do
      sed 's@%{?buildroot:%{buildroot}}@@g' $i > tmpfile
***************
*** 194,200 ****
          chmod 0644 $i
      fi
   done
! 
  %post	-p /sbin/ldconfig
  
  %postun -p /sbin/ldconfig
--- 256,262 ----
          chmod 0644 $i
      fi
   done
! fi
  %post	-p /sbin/ldconfig
  
  %postun -p /sbin/ldconfig
***************
*** 207,227 ****
  %files
  %defattr(-,root,root)
  %doc README COPYRIGHT doc/mpichman-chp4.ps.gz doc/mpichman-chp4mpd.ps.gz
! %doc doc/mpichman-chshmem.ps.gz doc/mpeman.ps.gz
! /usr/bin/*
! #/usr/sbin/*  
! /usr/lib/%{name}/*.so.*
! %{_mandir}/man1/*
  
- %files devel
- %defattr(-,root,root)
- /usr/share/*
- /usr/include/*
- /usr/lib/%{name}/*.a
- /usr/lib/%{name}/*.so
- %{_mandir}/man3/*
- %{_mandir}/man4/*
  
  %changelog
! * Thu Apr 25 2002 William (Bill) Gropp <gropp@mcs.anl.gov>
  - Initial version
--- 269,301 ----
  %files
  %defattr(-,root,root)
  %doc README COPYRIGHT doc/mpichman-chp4.ps.gz doc/mpichman-chp4mpd.ps.gz
! %doc doc/mpichman-chshmem.ps.gz doc/mpeman.ps.gz 
! %doc doc/mpeman.pdf doc/mpeman.ps.gz doc/mpiman.ps
! %doc doc/mpichman-chp4.pdf doc/mpichman-chp4mpd.pdf 
! %doc doc/mpichman-chshmem.pdf 
! %doc doc/mpichman-globus2.pdf doc/mpichman-globus2.ps.gz
! %{_bindir}/*
! %{_sbindir}/*
! #%{_webdir}/*
! %{_docdir}/*
! %{_libdir}/%{fullname}/*.so.*
! %{_libdir}/%{fullname}/*.a
! %{_libdir}/%{fullname}/*.so
! %{_libdir}/%{fullname}/mpe_prof.o
! %{_mandir}/%{fullname}/man1/*
! %{_mandir}/%{fullname}/man3/*
! %{_mandir}/%{fullname}/man4/*
! %{_mandir}/%{fullname}/mandesc
! %{_datadir}/%{fullname}
! %{_prefix}/share/upshot
! %{_prefix}/share/jumpshot-3
! %{_prefix}/share/jumpshot-2
! %{_exec_prefix}/%{fullname}
! %{_includedir}/%{fullname}/*
  
  
  %changelog
! * Fri Jan 10 2003 Willam Gropp <gropp@mcs.anl.gov>
! - Update to MPICH 1.2.5 and fixed buildroot
! * Thu Apr 25 2002 William Gropp <gropp@mcs.anl.gov>
  - Initial version
Index: util/mpiinstall.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/util/mpiinstall.in,v
retrieving revision 1.114
retrieving revision 1.115
diff -c -r1.114 -r1.115
*** util/mpiinstall.in	2002/08/12 15:55:38	1.114
--- util/mpiinstall.in	2003/01/13 17:26:02	1.115
***************
*** 186,192 ****
  
  # Uninstall filename
  if [ -z "$UNINSTALLFILE" ] ; then 
!     UNINSTALLFILE="$sbindir/mpiuninstall"
  fi
  
  if [ -z "$APREFIX" ] ; then
--- 186,192 ----
  
  # Uninstall filename
  if [ -z "$UNINSTALLFILE" ] ; then 
!     UNINSTALLFILE="$DESTDIR$sbindir/mpiuninstall"
  fi
  
  if [ -z "$APREFIX" ] ; then
***************
*** 222,231 ****
  else
      mode=$3
  fi
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 222,232 ----
  else
      mode=$3
  fi
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 274,281 ****
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $1 ] ; then
!     dir_to_make=`echo $1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir_to_make ; do
  	path_to_date="$path_to_date$path"
--- 275,282 ----
  # Make the given directory.  This handles building intermediate directories
  # as required, and maintains a list of created directories in dirlist.
  MkDir() {
! if [ ! -d $DESTDIR$1 ] ; then
!     dir_to_make=`echo $DESTDIR$1 | sed 's%/% /%g'`
      path_to_date=''
      for path in $dir_to_make ; do
  	path_to_date="$path_to_date$path"
***************
*** 310,319 ****
  # perl program.  mpireconfig can use FixupFile2 .
  #
  FixupFile() {
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 311,321 ----
  # perl program.  mpireconfig can use FixupFile2 .
  #
  FixupFile() {
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 349,355 ****
  else
      mode=$3
  fi
! $Show chmod $mode $2
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
--- 351,357 ----
  else
      mode=$3
  fi
! $Show chmod $mode $dest
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
***************
*** 362,371 ****
  # This version merely replaces builddir versions with the master versions
  # 
  FixupFile2() {
! if [ -d $2 ] ; then
!     dest=$2/`basename $1`
  else
!     dest=$2
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
--- 364,374 ----
  # This version merely replaces builddir versions with the master versions
  # 
  FixupFile2() {
! dest=$DESTDIR$2
! if [ -d $dest ] ; then
!     dest=$dest/`basename $1`
  else
!     dest=$dest
  fi
  if [ $replace = 0 -a -f $dest ] ; then
      if [ $verbose = 1 ] ; then echo "$dest exists; not changed" ; fi
***************
*** 402,408 ****
  else
      mode=$3
  fi
! $Show chmod $mode $2
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
--- 405,411 ----
  else
      mode=$3
  fi
! $Show chmod $mode $dest
  rc=$?
  if [ $rc != 0 ] ; then
      echo "**Error setting mode on file $2**"
***************
*** 478,484 ****
      CopyFile util/mpichlib.conf ${sysconfdir} 
      #
      # mpiman
!     $Show /bin/rm -f $bindir/mpiman
      FixupFile2 bin/mpiman $bindir/mpiman $XMODE
      #
      # mpirun et al.  This would be a good place to identify 
--- 481,487 ----
      CopyFile util/mpichlib.conf ${sysconfdir} 
      #
      # mpiman
!     $Show /bin/rm -f $DESTDIR$bindir/mpiman
      FixupFile2 bin/mpiman $bindir/mpiman $XMODE
      #
      # mpirun et al.  This would be a good place to identify 
***************
*** 511,517 ****
          CopyFile $top_srcdir/bin/tarch $bindir $XMODE
      fi
      #
!     $Show /bin/rm -f $bindir/mpireconfig
      if [ $verbose = 1 ] ; then 
          echo "Creating mpireconfig from util/mpireconfig.in"
      fi
--- 514,520 ----
          CopyFile $top_srcdir/bin/tarch $bindir $XMODE
      fi
      #
!     $Show /bin/rm -f $DESTDIR$bindir/mpireconfig
      if [ $verbose = 1 ] ; then 
          echo "Creating mpireconfig from util/mpireconfig.in"
      fi
***************
*** 542,549 ****
          -e "s%^MPIF77=\([^/ ]*\)/.*\$%MPIF77=$bindir/mpif77%g" \
          -e "s%^MPIF90=\([^/ ]*\)/.*\$%MPIF90=$bindir/mpif90%g" \
          -e "s%^MPICPLUSPLUS=\([^/ ]*\)/.*\$%MPICPLUSPLUS=$bindir/mpiCC%g" \
! 		config.status > ${bindir}/mpireconfig.dat
!     chmod $XMODE ${bindir}/mpireconfig.dat
      echo "/bin/rm -f ${bindir}/mpireconfig.dat" >> $UNINSTALLFILE
      else
          echo "Construct new ${bindir}/mpireconfig.dat from config.status"
--- 545,552 ----
          -e "s%^MPIF77=\([^/ ]*\)/.*\$%MPIF77=$bindir/mpif77%g" \
          -e "s%^MPIF90=\([^/ ]*\)/.*\$%MPIF90=$bindir/mpif90%g" \
          -e "s%^MPICPLUSPLUS=\([^/ ]*\)/.*\$%MPICPLUSPLUS=$bindir/mpiCC%g" \
! 		config.status > ${DESTDIR}${bindir}/mpireconfig.dat
!     chmod $XMODE ${DESTDIR}${bindir}/mpireconfig.dat
      echo "/bin/rm -f ${bindir}/mpireconfig.dat" >> $UNINSTALLFILE
      else
          echo "Construct new ${bindir}/mpireconfig.dat from config.status"
***************
*** 828,835 ****
  #
  
  # Handle the case of a weak-symbol profiling library
! if [ ! -s $libdir/libp@MPILIBNAME@.a ] ; then
!     (cd $libdir ; ln -s lib@MPILIBNAME@.a libp@MPILIBNAME@.a )
      echo "/bin/rm -f $libdir/libp@MPILIBNAME@.a" >> $UNINSTALLFILE
  fi
  # Message queue routine for debuggers must be built with the proper prefix.
--- 831,838 ----
  #
  
  # Handle the case of a weak-symbol profiling library
! if [ ! -s $DESTDIR$libdir/libp@MPILIBNAME@.a ] ; then
!     (cd $DESTDIR$libdir ; ln -s lib@MPILIBNAME@.a libp@MPILIBNAME@.a )
      echo "/bin/rm -f $libdir/libp@MPILIBNAME@.a" >> $UNINSTALLFILE
  fi
  # Message queue routine for debuggers must be built with the proper prefix.
***************
*** 968,978 ****
  # prefix=@prefix@ when ever prefix= starts in the first column (!)
  # It also does this with exec_prefix (!!)
       prefix=$APREFIX
! (cd $prefix/examples ; $bindir/mpireconfig Makefile )
  echo "(cd $prefix/examples ; $MAKE clean)" >> $UNINSTALLFILE
  echo "/bin/rm -f $prefix/examples/Makefile" >> $UNINSTALLFILE
       prefix=$Savevar
! CopyFile $prefix/examples/Makefile $datadir/Makefile.sample
  CopyFile $top_srcdir/installtest/cpi.c $prefix/examples
  CopyFile $top_srcdir/installtest/cpip.c $prefix/examples
  CopyFile $top_srcdir/installtest/cpilog.c $prefix/examples
--- 971,981 ----
  # prefix=@prefix@ when ever prefix= starts in the first column (!)
  # It also does this with exec_prefix (!!)
       prefix=$APREFIX
! (cd $DESTDIR$prefix/examples ; $DESTDIR$bindir/mpireconfig Makefile )
  echo "(cd $prefix/examples ; $MAKE clean)" >> $UNINSTALLFILE
  echo "/bin/rm -f $prefix/examples/Makefile" >> $UNINSTALLFILE
       prefix=$Savevar
! CopyFile $DESTDIR$prefix/examples/Makefile $datadir/Makefile.sample
  CopyFile $top_srcdir/installtest/cpi.c $prefix/examples
  CopyFile $top_srcdir/installtest/cpip.c $prefix/examples
  CopyFile $top_srcdir/installtest/cpilog.c $prefix/examples
***************
*** 990,1004 ****
  CopyFile $top_srcdir/installtest/README $prefix/examples
  #
  # Test build the examples
! $Show "(cd $prefix/examples ; /bin/rm -f mpirun ; \
  	  ln -s ../bin/mpirun mpirun )"
  echo "/bin/rm -f $prefix/examples/mpirun" >> $UNINSTALLFILE
  #
  echo "About to run installation test..."
! $Show "(cd $prefix/examples; $MAKE all ; $MAKE clean )"
! if [ @SHAREDKIND@ != "ignore" ] ; then
      echo "About to run installation test for shared libraries ..."
!     $Show "(cd $prefix/examples; MPICH_USE_SHLIB="yes"; export MPICH_USE_SHLIB; $MAKE all ; $MAKE clean )"
  fi
  #
  # This SHOULD use mpireconfig...
--- 993,1010 ----
  CopyFile $top_srcdir/installtest/README $prefix/examples
  #
  # Test build the examples
! $Show "(cd $DESTDIR$prefix/examples ; /bin/rm -f mpirun ; \
  	  ln -s ../bin/mpirun mpirun )"
  echo "/bin/rm -f $prefix/examples/mpirun" >> $UNINSTALLFILE
  #
  echo "About to run installation test..."
! if [ "x$DESTDIR" = "x" ]; then
!   # only works when DESTDIR is blank, and installing on final location.
!   $Show "(cd $DESTDIR$prefix/examples; $MAKE all ; $MAKE clean )"
!   if [ @SHAREDKIND@ != "ignore" ] ; then
      echo "About to run installation test for shared libraries ..."
!     $Show "(cd $DESTDIR$prefix/examples; MPICH_USE_SHLIB="yes"; export MPICH_USE_SHLIB; $MAKE all ; $MAKE clean )"
!   fi
  fi
  #
  # This SHOULD use mpireconfig...
***************
*** 1048,1054 ****
      echo "if [ -d $dir ] ; then rmdir $dir ; fi" >> $UNINSTALLFILE
  done
  #
! echo installed MPICH in $prefix
  echo $UNINSTALLFILE may be used to remove the installation.
  #
  if [ $errs -gt 0 ] ; then
--- 1054,1060 ----
      echo "if [ -d $dir ] ; then rmdir $dir ; fi" >> $UNINSTALLFILE
  done
  #
! echo installed MPICH in $prefix 
  echo $UNINSTALLFILE may be used to remove the installation.
  #
  if [ $errs -gt 0 ] ; then
Index: util/mpirun_dbg.totalview.in
===================================================================
RCS file: /home/MPI/cvsMaster/mpich/util/mpirun_dbg.totalview.in,v
retrieving revision 1.4
retrieving revision 1.5
diff -c -r1.4 -r1.5
*** util/mpirun_dbg.totalview.in	2001/12/05 15:47:34	1.4
--- util/mpirun_dbg.totalview.in	2003/01/13 18:46:26	1.5
***************
*** 38,42 ****
--- 38,52 ----
  # Note that this is run from within the mpirun.ch_p4 script only (!), so
  # the argument list is p4 specific.  FIX ME!
  #
+ # mpirun.ch_p4 exports nolocal and machinehead if not a local run.
+ if [ "$nolocal" = 1 ] ; then
+     # Note that mpirun.ch_p4 exports P4_RSHCOMMAND
+     rshcommand=${P4_RSHCOMMAND-ssh}
+     if [ "$rshcommand" = "ssh" ] ; then
+         doitall="$doitall $rshcommand -X $machinehead"
+     else
+         doitall="$doitall $rshcommand env DISPLAY=$DISPLAY"
+     fi
+ fi
  $doitall $tvcommand $prognamemain -a $cmdLineArgs -p4pg $p4pgfile -p4wd $p4workdir -mpichtv
  
