mirror of
https://github.com/Llewellynvdm/Tomb.git
synced 2024-11-25 14:17:41 +00:00
fixed lookup for mounted tombs
better parsing of mount output when looking for mounted tombs and bind hooks fixes parsing also for Debian 7 where somehow mount output has changed
This commit is contained in:
parent
85e36178df
commit
148be7283b
119
src/tomb
119
src/tomb
@ -1700,31 +1700,77 @@ resize_tomb() {
|
|||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
# print out an array of mounted tombs (internal use)
|
||||||
|
# format is semi-colon separated list of attributes
|
||||||
|
# if 1st arg is supplied, then list only that tomb
|
||||||
|
# Positions in array:
|
||||||
|
# 1 = full mapper path
|
||||||
|
# 2 = mountpoint
|
||||||
|
# 3 = filesystem type
|
||||||
|
# 4 = mount options
|
||||||
|
# 5 = tomb name
|
||||||
|
list_tomb_mounts() {
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
# list all open tombs
|
||||||
|
mount -l |
|
||||||
|
awk '
|
||||||
|
BEGIN { main="" }
|
||||||
|
/^\/dev\/mapper\/tomb/ {
|
||||||
|
if(main==$1) next;
|
||||||
|
print $1 ";" $3 ";" $5 ";" $6 ";" $7
|
||||||
|
main=$1
|
||||||
|
}
|
||||||
|
'
|
||||||
|
else
|
||||||
|
# list a specific tomb
|
||||||
|
mount -l |
|
||||||
|
awk -vtomb="[$1]" '
|
||||||
|
BEGIN { main="" }
|
||||||
|
/^\/dev\/mapper\/tomb/ {
|
||||||
|
if($7!=tomb) next;
|
||||||
|
if(main==$1) next;
|
||||||
|
print $1 ";" $3 ";" $5 ";" $6 ";" $7
|
||||||
|
main=$1
|
||||||
|
}
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# print out an array of mounted bind hooks (internal use)
|
||||||
|
# format is semi-colon separated list of attributes
|
||||||
|
# needs an argument: name of tomb whose hooks belong
|
||||||
|
list_tomb_binds() {
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
_failure "internal error: list_tomb_binds called without argument."; fi
|
||||||
|
|
||||||
|
mount -l |
|
||||||
|
awk -vtomb="$1" '
|
||||||
|
BEGIN { main="" }
|
||||||
|
/^\/dev\/mapper\/tomb/ {
|
||||||
|
if($7!=tomb) next;
|
||||||
|
if(main=="") { main=$1; next; }
|
||||||
|
if(main==$1)
|
||||||
|
print $1 ";" $3 ";" $5 ";" $6 ";" $7
|
||||||
|
}
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
# {{{ - Index
|
# {{{ - Index
|
||||||
# index files in all tombs for search
|
# index files in all tombs for search
|
||||||
# $1 is optional, to specify a tomb
|
# $1 is optional, to specify a tomb
|
||||||
index_tombs() {
|
index_tombs() {
|
||||||
{ command -v updatedb > /dev/null } || {
|
{ command -v updatedb > /dev/null } || {
|
||||||
die "Cannot index tombs on this system: updatedb not installed" }
|
die "Cannot index tombs on this system: updatedb not installed" }
|
||||||
|
|
||||||
if [ $1 ]; then
|
mounted_tombs=(`list_tomb_mounts $1`)
|
||||||
# list a specific tomb
|
{ test ${#mounted_tombs} = 0 } && {
|
||||||
mounted_tombs=`mount -l |
|
if [ $1 ]; then die "There seems to be no open tomb engraved as [$1]"
|
||||||
awk -vtomb="[$1]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`
|
else die "I can't see any open tomb, may they all rest in peace."
|
||||||
else
|
|
||||||
# list all open tombs
|
|
||||||
mounted_tombs=`mount -l |
|
|
||||||
awk '/^\/dev\/mapper\/tomb/ { print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`
|
|
||||||
fi
|
|
||||||
if ! [ $mounted_tombs ]; then
|
|
||||||
if [ $1 ]; then
|
|
||||||
die "There seems to be no open tomb engraved as [$1]"
|
|
||||||
else
|
|
||||||
die "I can't see any open tomb, may they all rest in peace."
|
|
||||||
fi
|
fi
|
||||||
fi
|
}
|
||||||
|
|
||||||
yes "Creating and updating search indexes"
|
yes "Creating and updating search indexes"
|
||||||
for t in ${(f)mounted_tombs}; do
|
for t in ${mounted_tombs}; do
|
||||||
mapper=`basename ${t[(ws:;:)1]}`
|
mapper=`basename ${t[(ws:;:)1]}`
|
||||||
tombname=${t[(ws:;:)5]}
|
tombname=${t[(ws:;:)5]}
|
||||||
tombmount=${t[(ws:;:)2]}
|
tombmount=${t[(ws:;:)2]}
|
||||||
@ -1741,10 +1787,9 @@ search_tombs() {
|
|||||||
die "Cannot index tombs on this system: updatedb not installed" }
|
die "Cannot index tombs on this system: updatedb not installed" }
|
||||||
|
|
||||||
# list all open tombs
|
# list all open tombs
|
||||||
mounted_tombs=(`mount -l |
|
mounted_tombs=(`list_tomb_mounts $1`)
|
||||||
awk '/^\/dev\/mapper\/tomb/ { print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`)
|
|
||||||
{ test ${#mounted_tombs} = 0 } && {
|
{ test ${#mounted_tombs} = 0 } && {
|
||||||
die "I can't see any open tomb, may they all rest in peace." }
|
die "I can't see any open tomb, may they all rest in peace." }
|
||||||
yes "Searching for: $fg_bold[white]${=PARAM}$fg_no_bold[white]"
|
yes "Searching for: $fg_bold[white]${=PARAM}$fg_no_bold[white]"
|
||||||
for t in ${mounted_tombs}; do
|
for t in ${mounted_tombs}; do
|
||||||
xxx "checking for index: ${t}"
|
xxx "checking for index: ${t}"
|
||||||
@ -1767,30 +1812,13 @@ search_tombs() {
|
|||||||
# list all tombs mounted in a readable format
|
# list all tombs mounted in a readable format
|
||||||
# $1 is optional, to specify a tomb
|
# $1 is optional, to specify a tomb
|
||||||
list_tombs() {
|
list_tombs() {
|
||||||
if [ $1 ]; then
|
|
||||||
# list a specific tomb
|
|
||||||
mounted_tombs=`mount -l |
|
|
||||||
awk -vtomb="[$1]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`
|
|
||||||
else
|
|
||||||
# list all open tombs
|
|
||||||
mounted_tombs=`mount -l |
|
|
||||||
awk '/^\/dev\/mapper\/tomb/ { print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`
|
|
||||||
fi
|
|
||||||
# 1 = full mapper path
|
|
||||||
# 2 = mountpont
|
|
||||||
# 3 = filesystem
|
|
||||||
# 4 = mount options
|
|
||||||
# 5 = name
|
|
||||||
|
|
||||||
if ! [ $mounted_tombs ]; then
|
# list all open tombs
|
||||||
if [ $1 ]; then
|
mounted_tombs=(`list_tomb_mounts $1`)
|
||||||
die "There seems to be no open tomb engraved as [$1]"
|
{ test ${#mounted_tombs} = 0 } && {
|
||||||
else
|
die "I can't see any ${1:-open} tomb, may they all rest in peace." }
|
||||||
die "I can't see any open tomb, may they all rest in peace."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
for t in ${(f)mounted_tombs}; do
|
for t in ${mounted_tombs}; do
|
||||||
mapper=`basename ${t[(ws:;:)1]}`
|
mapper=`basename ${t[(ws:;:)1]}`
|
||||||
tombname=${t[(ws:;:)5]}
|
tombname=${t[(ws:;:)5]}
|
||||||
tombmount=${t[(ws:;:)2]}
|
tombmount=${t[(ws:;:)2]}
|
||||||
@ -1856,11 +1884,10 @@ list_tombs() {
|
|||||||
print -n "$fg_no_bold[green]$tombname"
|
print -n "$fg_no_bold[green]$tombname"
|
||||||
print "$fg_bold[red] Your tomb is almost full!"
|
print "$fg_bold[red] Your tomb is almost full!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# now check hooks
|
# now check hooks
|
||||||
mtomb=`sed 's:\/:\\\/:g' <<< $tombmount`
|
mounted_hooks=(`list_tomb_binds $tombname`)
|
||||||
mounted_hooks=`mount | awk "/^$mtomb/"' {print $1 ";" $3}'`
|
for h in ${mounted_hooks}; do
|
||||||
for h in ${(f)mounted_hooks}; do
|
|
||||||
print -n "$fg_no_bold[green]$tombname"
|
print -n "$fg_no_bold[green]$tombname"
|
||||||
print -n "$fg_no_bold[white] hooks "
|
print -n "$fg_no_bold[white] hooks "
|
||||||
print -n "$fg_bold[white]`basename ${h[(ws:;:)1]}`"
|
print -n "$fg_bold[white]`basename ${h[(ws:;:)1]}`"
|
||||||
|
Loading…
Reference in New Issue
Block a user