[arch-projects] [RFC 15/23] Add support for -M, the map operation
Matthew Monaco
dgbaley27 at 0x01b.net
Fri May 18 12:22:09 EDT 2012
From: Matthew Monaco <matthew.monaco at 0x01b.net>
There are a few different syntaxes here. With no arguments, the
ct_read_crypttab iterator is used. With 1 argument, a volume is found in
crypttab. With 2-4 arguments, the volume is defined on the command line
and crypttab is not used.
---
cryptmount.sh | 44 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/cryptmount.sh b/cryptmount.sh
index a8a0ec8..59c6c78 100755
--- a/cryptmount.sh
+++ b/cryptmount.sh
@@ -185,7 +185,13 @@ ct_main() {
elif [ "$action" = "map" ]; then
- :
+ if [ $# -ne 0 ]; then
+ [ "$FILTER" != "!noauto" ] && \
+ info "Filters from -O are ignored in this mode"
+ unset FILTER
+ fi
+
+ ct_main_map "$@"
else
@@ -214,6 +220,42 @@ ct_main_unmap() {
fi
}
+ct_main_map() {
+
+ if [ $# -eq 0 ]; then
+
+ ct_read_crypttab ct_map
+
+ elif [ $# -eq 1 ]; then
+
+ local vol _tmp="$1"
+
+ find_func() {
+ if [ "$1" = "$_tmp" -o "$2" = "$_tmp" ]; then
+ printf "%s" "$*"
+ else
+ false
+ fi
+ }
+
+ if vol="$(ct_read_crypttab -1 find_func)"; then
+ ct_map $vol
+ else
+ error "Unable to find '$_tmp' in '$CRYPTTAB'"
+ false
+ fi
+
+ elif [ $# -le 3 ]; then
+
+ ct_map "$@"
+
+ else
+
+ error "Too many options given for -M"
+ ct_print_usage 1
+
+ fi
+}
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
# #
--
1.7.10.2
More information about the arch-projects
mailing list