From 7c3ab7620b9ab1d7a3da07c5c97e0bd5bdc693cf Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Thu, 23 Jul 2009 20:26:40 +0200
Subject: [PATCH] new script - foamEtcFile

- Locate user/site/shipped file with the semantics used in the
  ~OpenFOAM/fileName expansion
---
 ReleaseNotes-1.6 |  15 ++---
 bin/foamEtcFile  | 143 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 151 insertions(+), 7 deletions(-)
 create mode 100755 bin/foamEtcFile

diff --git a/ReleaseNotes-1.6 b/ReleaseNotes-1.6
index b18ce5659a3..7b6a086e928 100644
--- a/ReleaseNotes-1.6
+++ b/ReleaseNotes-1.6
@@ -396,13 +396,13 @@
     + =addSubtract= - simple add/subtract field functionality
 
 ** Usage
-  + =timeSelector= can now combine =-time ranges= and =-latestTime= options
-    (e.g. -time '0.01:0.09', -time '0.01:').  More reliable behaviour for cases
-    missing /constant// or /0// directories. When the =-noZero= option is
-    enabled, =-latestTime= will not select the =0/= directory unless the
-    =-zeroTime= option is given.  This helps avoid ill effects caused by
-    accidentally using the /0// directory in certain utilities (eg,
-    =reconstructPar=).
+  + =timeSelector= can now combine =-time ranges= and =-latestTime= options.
+    For example, -time '0.01:0.09' -latestTime vs. -time '0.01:'.
+    More reliable behaviour for cases missing /constant// or /0// directories.
+    When the =-noZero= option is enabled, =-latestTime= will not select the
+    =0/= directory unless the =-zeroTime= option is given.
+    This helps avoid ill effects caused by accidentally using the
+    /0// directory in certain utilities (eg, =reconstructPar=).
   + =-region= option added to more utilities.
 
 ** Improvements to Paraview reader module
@@ -412,3 +412,4 @@
     region. A *new* =-touch= option to generate the /.OpenFOAM/ file only.
     Only creates (and removes) /.OpenFOAM/ files if they didn't already
     exist, which is useful in connection with the =-touch= option.
+
diff --git a/bin/foamEtcFile b/bin/foamEtcFile
new file mode 100755
index 00000000000..e3faab4121d
--- /dev/null
+++ b/bin/foamEtcFile
@@ -0,0 +1,143 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+#    \\/     M anipulation  |
+#-------------------------------------------------------------------------------
+# License
+#     This file is part of OpenFOAM.
+#
+#     OpenFOAM is free software; you can redistribute it and/or modify it
+#     under the terms of the GNU General Public License as published by the
+#     Free Software Foundation; either version 2 of the License, or (at your
+#     option) any later version.
+#
+#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+#     for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with OpenFOAM; if not, write to the Free Software Foundation,
+#     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Script
+#     foamEtcFile
+#
+# Description
+#     Locate user/site/shipped file with the semantics used in the
+#     ~OpenFOAM/fileName expansion
+#
+#-------------------------------------------------------------------------------
+unset listOpt quietOpt
+
+usage() {
+    [ "$quietOpt" = true ] && exit 1
+
+    exec 1>&2
+    while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+    cat<<USAGE
+
+usage: ${0##*/} [OPTION] fileName
+       ${0##*/} -list
+
+options:
+  -l | -list    list the directories to be searched
+  -q | -quiet   suppress all normal output
+
+  Locate user/site/shipped file with the semantics used in the
+  ~OpenFOAM/fileName expansion
+
+  Exit status 0 when the file is found and output resolved path to stdout.
+  Exit status 1 for miscellaneous errors.
+  Exit status 2 when the file is not found.
+
+USAGE
+    exit 1
+}
+
+
+# parse options
+while [ "$#" -gt 0 ]
+do
+    case "$1" in
+    -h | -help)
+        usage
+        ;;
+    -l | -list)
+        listOpt=true
+        shift
+        ;;
+    -q | -quiet)
+        quietOpt=true
+        shift
+        ;;
+    -*)
+        usage "unknown option: '$*'"
+        ;;
+    *)
+        break
+        ;;
+    esac
+done
+
+
+# Save the essential bits of information:
+nArgs=$#
+fileName="$1"
+
+# The various places to be searched:
+set -- \
+    $HOME/.${WM_PROJECT:-OpenFOAM}/$WM_PROJECT_VERSION \
+    $HOME/.${WM_PROJECT:-OpenFOAM} \
+    $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION \
+    $WM_PROJECT_INST_DIR/site \
+    $WM_PROJECT_DIR/etc
+
+
+#
+# The main routine
+#
+
+if [ "$listOpt" = true ]
+then
+
+    # list directories, or potential file locations
+    [ "$nArgs" -le 1 ] || usage
+
+    # a silly combination, but -quiet has precedence
+    [ "$quietOpt" = true ] && exit 0
+
+    for dir
+    do
+        if [ "$nArgs" -eq 1 ]
+        then
+            echo "$dir/$fileName"
+        else
+            echo "$dir"
+        fi
+    done
+    exit 0
+
+else
+
+    [ "$nArgs" -eq 1 ] || usage
+
+    for dir
+    do
+        if [ -f "$dir/$fileName" ]
+        then
+            [ "$quietOpt" = true ] || echo "$dir/$fileName"
+            exit 0
+        fi
+    done
+
+fi
+
+
+# general error, eg file not found
+exit 2
+
+#------------------------------------------------------------------------------
-- 
GitLab