Skip to content

Commit b8606a2

Browse files
committed
Fix function removing extension.
The ${FOO%.*} expression removes everything after the last dot, which returns wrong results for paths like /foo/bar.baz/bar. Make it use basename and dirname intead.
1 parent d296e80 commit b8606a2

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

scripts/rabbitmq-server

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,19 @@ if [ ! -f "${RABBITMQ_SCHEMA_DIR}/rabbit.schema" ]; then
7474
cp "${RABBITMQ_HOME}/priv/schema/rabbit.schema" "${RABBITMQ_SCHEMA_DIR}"
7575
fi
7676

77+
get_noex() {
78+
if [ "x" = "x${1}" ]; then
79+
echo ""
80+
else
81+
local BASENAME=$(basename $1)
82+
local DIRNAME=$(dirname $1)
83+
echo "${DIRNAME}/${BASENAME%.*}"
84+
fi
85+
}
86+
7787
# Check that advanced config file has the .config extension
7888
# Add .config extension if it's empty
79-
RABBITMQ_ADVANCED_CONFIG_FILE_NOEX="${RABBITMQ_ADVANCED_CONFIG_FILE%.*}"
89+
RABBITMQ_ADVANCED_CONFIG_FILE_NOEX=$(get_noex ${RABBITMQ_ADVANCED_CONFIG_FILE})
8090
if [ "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" \
8191
-o "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" ]; then
8292
RABBITMQ_ADVANCED_CONFIG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config"
@@ -87,7 +97,7 @@ else
8797
fi
8898

8999

90-
RABBITMQ_CONFIG_FILE_NOEX="${RABBITMQ_CONFIG_FILE%.*}"
100+
RABBITMQ_CONFIG_FILE_NOEX=$(get_noex ${RABBITMQ_CONFIG_FILE})
91101

92102
# Extension is not specified.
93103
# Determine config type from file
@@ -133,7 +143,7 @@ fi
133143

134144
# Set -config if the file exists
135145
if [ -f "${RABBITMQ_CONFIG_ARG_FILE}" ]; then
136-
RABBITMQ_CONFIG_ARG_FILE_NOEX="${RABBITMQ_CONFIG_ARG_FILE%.*}"
146+
RABBITMQ_CONFIG_ARG_FILE_NOEX=$(get_noex ${RABBITMQ_CONFIG_ARG_FILE})
137147
RABBITMQ_CONFIG_ARG="-config ${RABBITMQ_CONFIG_ARG_FILE_NOEX}"
138148
fi
139149

0 commit comments

Comments
 (0)