X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ba66c0a53a3284954996b301af67e23b04513d87..36fa571a13985879dc627c70ecc2340af606aa42:/src/smpi/smpitools.sh diff --git a/src/smpi/smpitools.sh b/src/smpi/smpitools.sh index 835cd595d0..a8fc1a339c 100644 --- a/src/smpi/smpitools.sh +++ b/src/smpi/smpitools.sh @@ -1,8 +1,15 @@ +#!/bin/sh + +# Copyright (c) 2013-2014. The SimGrid Team. +# All rights reserved. + +# This program is free software; you can redistribute it and/or modify it +# under the terms of the license (GNU LGPL) which comes with this package. + SAVEIFS="$IFS" LISTSEP="$(printf '\b')" -# Create a temporary file, with its name of the form $1_XXX$2, where XXX is -# replaced by an unique string. +# Create a temporary file, with its name of the form $1_XXX$2, where XXX is replaced by an unique string. # $1: prefix, $2: suffix mymktemp () { tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null) @@ -27,18 +34,28 @@ mymktemp () { # Add a word to the end of a list (words separated by LISTSEP) # $1: list, $2...: words to add list_add () { - local list content + local list content newcontent list="$1" shift - eval content=\"\${$list}\" - IFS="$LISTSEP" - if [ -z "$content" ]; then - content="$*" - else - content="$content${LISTSEP}$*" + if [ $# -gt 0 ]; then + eval content=\"\${$list}\" + IFS="$LISTSEP" + newcontent="$*" + IFS="$SAVEIFS" + if [ -z "$content" ]; then + content="$newcontent" + else + content="$content${LISTSEP}$newcontent" + fi + eval $list=\"\${content}\" + fi +} + +# Like list_add, but only if first word to add ($2) is not empty +list_add_not_empty () { + if [ -n "$2" ]; then + list_add "$@" fi - IFS="$SAVEIFS" - eval $list=\"\${content}\" } # Set contents of a list (words separated by LISTSEP) @@ -48,8 +65,7 @@ list_set () { list_add "$@" } -# Get the content of a list: positional parameters ($1, $2, ...) are set to the -# content of the list +# Get the content of a list: positional parameters ($1, $2, ...) are set to the content of the list # $1: list # usage: eval $(list_get list) list_get () {