X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ba66c0a53a3284954996b301af67e23b04513d87..25dd0abaeebc08a4441684ff533c1668bd7e976d:/src/smpi/smpitools.sh diff --git a/src/smpi/smpitools.sh b/src/smpi/smpitools.sh index 835cd595d0..bb41e7c8cc 100644 --- a/src/smpi/smpitools.sh +++ b/src/smpi/smpitools.sh @@ -1,3 +1,12 @@ +#!/bin/sh +#---- smpitools.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')" @@ -27,18 +36,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) @@ -55,3 +74,5 @@ list_set () { list_get () { printf 'IFS="$LISTSEP"; eval set -- \\$%s; IFS="$SAVEIFS"' "$1" } + +#---- end of smpitools.sh -------------------------------------------------#