blob: af5f3f31da7f8cf2c3658b75bdf93b2988e7cb47 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
#!/bin/sh
# Blueman Mount Script for Slackware
# by Zarren Spry & Robby Workman
# varables
DEBUG=${DEBUG:-"1"}
if [ ! -z $DEBUG ];then
dbg_msg="Check /var/log/messages for errors."
else
dbg_msg="Enable *DEBUG* for error log."
fi
device_addr=$1
device_name=$(hcitool name $device_addr)
own_name=$(basename $0)
basedir=${basedir:-$HOME/.gvfs}
dir=${basedir}
browser=${browser:-"xdg-open"}
progress_bar_counter=0
max_tries=5
# Check for kdialog
if which kdialog3 1>/dev/null 2>/dev/null; then
messagetype="kdialog"
else
messagetype="gtkdialog"
export p_file="progress.tmp"
export m_file="message.tmp"
touch $p_file
touch $m_file
echo "0" > $p_file
fi
# Fix broken pipe when canceled
trap killscript INT
killscript()
{
rm ./*.tmp
exit 0
}
# Gtkdialog abstraction
gtkbox_interactive() {
export messagebox='
<window title="Blueman_open" decorated="false">
<vbox>
<frame Blueman Open Device.>
<text>
<label>Mounting Bluetooth Devive ..</label>
</text>
<progressbar>
<input>progress p_file</input>
<action type="exit">done</action>
</progressbar>
</frame>
</vbox>
</window>
'
}
gtkmessage() {
I=$IFS; IFS=""
for STATEMENT in $(gtkdialog --center --program=messagebox); do
eval $STATEMENT
done
IFS=$I
}
# Gtkdialog progress control loop
if [ "$messagetype" = "gtkdialog" ]; then
progress(){
while :
do
percentage=$(cat $p_file)
text=$(cat $m_file)
echo $percentage
echo $text
if [ $percentage = 100 ]; then
killscript
break
fi
sleep 0.3
done
}
message(){
echo $MSG_TXT > $m_file
}
export -f progress killscript
fi
# End gtkdialog abstraction
# Mount function
mount_device ()
{
loop=0
while [ $loop -lt $max_tries ]
do
if [ "$messagetype" = "gtkdialog" ]; then
let progress_bar_counter=$progress_bar_counter+17
echo $progress_bar_counter > $p_file
fi
[ ! -z $DEBUG ] && logger -i -t $own_name "Perform $loop try to mount device $device_name to $dir using gvfs."
[ ! -z $DEBUG ] && logger -i -t $own_name "Execute: gvfs-mount obex://["$device_addr"]"
out=$(gvfs-mount obex://["$device_addr"] 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
mounts=$(ls $dir | grep $device_name)
[ ! -z $DEBUG ] && logger -i -t $own_name "Found $mounts mounted inside $dir"
if [ "$mounts" = "$device_name" ] ;then
MSG_TXT="Successfully mounted $device_name to $dir"
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 2
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
echo "99" > $p_file
sleep 2
echo "100" > $p_file
fi
[ ! -z $DEBUG ] && logger -i -t $own_name "Open $dir/$device_name with $browser"
out=$($browser $dir/$device_name 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
exit 0
else
[ ! -z $DEBUG ] && logger -i -t $own_name "Failed to mount $device_name to $dir/$device_name from try $loop "
if [ $loop -ne 4 ]; then
MSG_TXT="Attempt $loop to mount $device_name to $dir failed. Retrying, please wait ..."
else
MSG_TXT="Failed to mount $device_name to $dir. $dbg_msg"
sleep 3
echo "100" > $p_file
fi
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 3
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
fi
fi
sleep 2
((loop += 1))
done
}
# Unmount function
umount_device ()
{
mounts=$(ls $dir | grep $device_name)
if [ "$mounts" = "$device_name" ] ;then
[ ! -z $DEBUG ] && logger -i -t $own_name "Performing umount of $dir/$device_name."
out=$(gvfs-mount -u obex://[$device_addr] 2>&1)
[ ! -z $DEBUG ] && logger -i -t $own_name "$out"
if [ -d $dir/$device_name ] ;then
[ ! -z $DEBUG ] && logger -i -t $own_name "$device_name failed to unmount. Please perform its umount manually."
MSG_TXT="Failed to umount $dir - $dbg_msg"
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 3
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
echo "99" > $p_file
rm ./*.tmp
echo "100" > $p_file
exit 1
fi
else
[ ! -z $DEBUG ] && logger -i -t $own_name "Successfully unmounted $device_name."
fi
else
[ ! -z $DEBUG ] && logger -i -t $own_name "$dir is not mounted - no need to perform umount..."
fi
}
# Main
MSG_TXT="Mount device is in progress... Please wait..."
if [ $messagetype == "kdialog" ]; then
kdialog --passivepopup "$MSG_TXT" 4
elif [ $messagetype == "gtkdialog" ]; then
message $"$MSG_TXT"
gtkbox_interactive
gtkmessage&
fi
umount_device
mount_device
|