Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Try to fix temp file creation.
[simgrid.git] / src / smpi / smpif90.in
index 7c52fc5..bba2ffa 100644 (file)
@@ -12,6 +12,23 @@ main_name=main
 declare -a TMPFILES
 trap 'rm -f "${TMPFILES[@]}"' EXIT
 
+# $1: prefix, $2: suffix
+mymktemp () {
+    tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
+    if [ -z "$tmp" ]; then
+        # mktemp failed (unsupported --suffix ?), try unsafe mode
+        tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
+        if [ -z "$tmp" ]; then
+            # mktemp failed again (doesn't exist ?), try very unsafe mode
+            tmp="$1_$$x$RANDOM"
+        fi
+        tmp="${tmp}$2"
+        # create temp file, and exit if it existed before
+        sh -C -c "true > \"${tmp}\"" || exit 1
+    fi
+    echo "${tmp}"
+}
+
 CMDLINE=""
 while [ -n "$1" ]; do
   ARG="$1"
@@ -23,8 +40,8 @@ while [ -n "$1" ]; do
       CMDLINE="${CMDLINE} -c "
       ;;
    *.f90|*.F90)
-      TMPFILE=$(mktemp "${ARG}_XXXXXX.f90")
-      TMPFILES+=( "${TMPFILE}" )
+      TMPFILE=$(mymktemp "${ARG}" ".f90")
+      TMPFILES+="${TMPFILE}"
       #replace "program main_name by subroutine user\_main (and the end clause as well)"
       sed 's/[[:space:]]*program[[:space:]]*\([a-zA-Z0-9\-\_]*\)/subroutine user\_main /gI;s/[[:space:]]*use[[:space:]]*mpi/\include \"mpif\.h\" /gI'  ${ARG} > ${TMPFILE}
       SRCFILE="${TMPFILE}"