xref: /trunk/main/shell/source/unix/misc/senddoc.sh (revision cdf0e10c)
1*cdf0e10cSrcweir#!/bin/sh
2*cdf0e10cSrcweirURI_ENCODE="`dirname $0`/uri-encode"
3*cdf0e10cSrcweirFOPTS=""
4*cdf0e10cSrcweir
5*cdf0e10cSrcweir# linux file utility needs -L option to resolve symlinks
6*cdf0e10cSrcweirif [ "`uname -s`" = "Linux" ]
7*cdf0e10cSrcweirthen
8*cdf0e10cSrcweir  FOPTS="-L"
9*cdf0e10cSrcweirfi
10*cdf0e10cSrcweir
11*cdf0e10cSrcweir# do not confuse the system mail clients with OOo and Java libraries
12*cdf0e10cSrcweirunset LD_LIBRARY_PATH
13*cdf0e10cSrcweir
14*cdf0e10cSrcweir# tries to locate the executable specified
15*cdf0e10cSrcweir# as first parameter in the user's path.
16*cdf0e10cSrcweirwhich() {
17*cdf0e10cSrcweir	if [ ! -z "$1" ]; then
18*cdf0e10cSrcweir		for i in `echo $PATH | sed -e 's/^:/.:/g' -e 's/:$/:./g' -e 's/::/:.:/g' -e 's/:/ /g'`; do
19*cdf0e10cSrcweir			if [ -x "$i/$1" -a ! -d "$i/$1" ]; then
20*cdf0e10cSrcweir				echo "$i/$1"
21*cdf0e10cSrcweir				break;
22*cdf0e10cSrcweir			fi
23*cdf0e10cSrcweir		done
24*cdf0e10cSrcweir	fi
25*cdf0e10cSrcweir}
26*cdf0e10cSrcweir
27*cdf0e10cSrcweir# checks for the original mozilla start script(s)
28*cdf0e10cSrcweir# and restrict the "-remote" semantics to those.
29*cdf0e10cSrcweirrun_mozilla() {
30*cdf0e10cSrcweir	# find mozilla script in PATH if necessary
31*cdf0e10cSrcweir	if [ "`basename $1`" = "$1" ]; then
32*cdf0e10cSrcweir		moz=`which $1`
33*cdf0e10cSrcweir	else
34*cdf0e10cSrcweir		moz=$1
35*cdf0e10cSrcweir	fi
36*cdf0e10cSrcweir
37*cdf0e10cSrcweir	if file $FOPTS "$moz" | grep "script" > /dev/null && grep "[NM]PL" "$moz" > /dev/null; then
38*cdf0e10cSrcweir		"$moz" -remote 'ping()' 2>/dev/null >/dev/null
39*cdf0e10cSrcweir		if [ $? -eq 2 ]; then
40*cdf0e10cSrcweir			"$1" -compose "$2" &
41*cdf0e10cSrcweir		else
42*cdf0e10cSrcweir			"$1" -remote "xfeDoCommand(composeMessage,$2)" &
43*cdf0e10cSrcweir		fi
44*cdf0e10cSrcweir	else
45*cdf0e10cSrcweir		"$1" -compose "$2" &
46*cdf0e10cSrcweir	fi
47*cdf0e10cSrcweir}
48*cdf0e10cSrcweir
49*cdf0e10cSrcweirif [ "$1" = "--mailclient" ]; then
50*cdf0e10cSrcweir	shift
51*cdf0e10cSrcweir	MAILER=$1
52*cdf0e10cSrcweir	shift
53*cdf0e10cSrcweirfi
54*cdf0e10cSrcweir
55*cdf0e10cSrcweir# autodetect mail client from executable name
56*cdf0e10cSrcweircase `basename "$MAILER" | sed 's/-.*$//'` in
57*cdf0e10cSrcweir
58*cdf0e10cSrcweir	iceape | mozilla | netscape | seamonkey | icedove | thunderbird)
59*cdf0e10cSrcweir
60*cdf0e10cSrcweir		while [ "$1" != "" ]; do
61*cdf0e10cSrcweir			case $1 in
62*cdf0e10cSrcweir				--to)
63*cdf0e10cSrcweir					TO=${TO:-}${TO:+,}$2
64*cdf0e10cSrcweir					shift
65*cdf0e10cSrcweir					;;
66*cdf0e10cSrcweir				--cc)
67*cdf0e10cSrcweir					CC=${CC:-}${CC:+,}$2
68*cdf0e10cSrcweir					shift
69*cdf0e10cSrcweir					;;
70*cdf0e10cSrcweir				--bcc)
71*cdf0e10cSrcweir					BCC=${BCC:-}${BCC:+,}$2
72*cdf0e10cSrcweir					shift
73*cdf0e10cSrcweir					;;
74*cdf0e10cSrcweir				--subject)
75*cdf0e10cSrcweir					SUBJECT=$2
76*cdf0e10cSrcweir					shift
77*cdf0e10cSrcweir					;;
78*cdf0e10cSrcweir				--body)
79*cdf0e10cSrcweir					BODY=$2
80*cdf0e10cSrcweir					shift
81*cdf0e10cSrcweir					;;
82*cdf0e10cSrcweir				--attach)
83*cdf0e10cSrcweir					ATTACH=${ATTACH:-}${ATTACH:+,}`echo "file://$2" | ${URI_ENCODE}`
84*cdf0e10cSrcweir					shift
85*cdf0e10cSrcweir					;;
86*cdf0e10cSrcweir				*)
87*cdf0e10cSrcweir					;;
88*cdf0e10cSrcweir			esac
89*cdf0e10cSrcweir			shift;
90*cdf0e10cSrcweir		done
91*cdf0e10cSrcweir
92*cdf0e10cSrcweir		if [ "$TO" != "" ]; then
93*cdf0e10cSrcweir			COMMAND=${COMMAND:-}${COMMAND:+,}to=${TO}
94*cdf0e10cSrcweir		fi
95*cdf0e10cSrcweir		if [ "$CC" != "" ]; then
96*cdf0e10cSrcweir			COMMAND=${COMMAND:-}${COMMAND:+,}cc=${CC}
97*cdf0e10cSrcweir		fi
98*cdf0e10cSrcweir		if [ "$BCC" != "" ]; then
99*cdf0e10cSrcweir			COMMAND=${COMMAND:-}${COMMAND:+,}bcc=${BCC}
100*cdf0e10cSrcweir		fi
101*cdf0e10cSrcweir		if [ "$SUBJECT" != "" ]; then
102*cdf0e10cSrcweir			COMMAND=${COMMAND:-}${COMMAND:+,}subject=${SUBJECT}
103*cdf0e10cSrcweir		fi
104*cdf0e10cSrcweir		if [ "$BODY" != "" ]; then
105*cdf0e10cSrcweir			COMMAND=${COMMAND:-}${COMMAND:+,}body=${BODY}
106*cdf0e10cSrcweir		fi
107*cdf0e10cSrcweir		if [ "$ATTACH" != "" ]; then
108*cdf0e10cSrcweir			COMMAND=${COMMAND:-}${COMMAND:+,}attachment=${ATTACH}
109*cdf0e10cSrcweir		fi
110*cdf0e10cSrcweir
111*cdf0e10cSrcweir		run_mozilla "$MAILER" "$COMMAND"
112*cdf0e10cSrcweir		;;
113*cdf0e10cSrcweir
114*cdf0e10cSrcweir	kmail)
115*cdf0e10cSrcweir
116*cdf0e10cSrcweir		while [ "$1" != "" ]; do
117*cdf0e10cSrcweir			case $1 in
118*cdf0e10cSrcweir				--to)
119*cdf0e10cSrcweir					TO="${TO:-}${TO:+,}$2"
120*cdf0e10cSrcweir					shift
121*cdf0e10cSrcweir					;;
122*cdf0e10cSrcweir				--cc)
123*cdf0e10cSrcweir					CC="${CC:-}${CC:+,}$2"
124*cdf0e10cSrcweir					shift
125*cdf0e10cSrcweir					;;
126*cdf0e10cSrcweir				--bcc)
127*cdf0e10cSrcweir					BCC="${BCC:-}${BCC:+,}$2"
128*cdf0e10cSrcweir					shift
129*cdf0e10cSrcweir					;;
130*cdf0e10cSrcweir				--subject)
131*cdf0e10cSrcweir					SUBJECT="$2"
132*cdf0e10cSrcweir					shift
133*cdf0e10cSrcweir					;;
134*cdf0e10cSrcweir				--body)
135*cdf0e10cSrcweir					BODY="$2"
136*cdf0e10cSrcweir					shift
137*cdf0e10cSrcweir					;;
138*cdf0e10cSrcweir				--attach)
139*cdf0e10cSrcweir					ATTACH="$2"
140*cdf0e10cSrcweir					shift
141*cdf0e10cSrcweir					;;
142*cdf0e10cSrcweir				*)
143*cdf0e10cSrcweir					;;
144*cdf0e10cSrcweir			esac
145*cdf0e10cSrcweir			shift;
146*cdf0e10cSrcweir		done
147*cdf0e10cSrcweir
148*cdf0e10cSrcweir		${MAILER} --composer ${CC:+--cc} ${CC:+"${CC}"} ${BCC:+--bcc} ${BCC:+"${BCC}"} \
149*cdf0e10cSrcweir			${SUBJECT:+--subject} ${SUBJECT:+"${SUBJECT}"} ${BODY:+--body} ${BODY:+"${BODY}"} \
150*cdf0e10cSrcweir			${ATTACH:+--attach} ${ATTACH:+"${ATTACH}"} ${TO:+"${TO}"}
151*cdf0e10cSrcweir		;;
152*cdf0e10cSrcweir
153*cdf0e10cSrcweir	mutt)
154*cdf0e10cSrcweir
155*cdf0e10cSrcweir		while [ "$1" != "" ]; do
156*cdf0e10cSrcweir			case $1 in
157*cdf0e10cSrcweir				--from)
158*cdf0e10cSrcweir					FROM="$2"
159*cdf0e10cSrcweir					shift
160*cdf0e10cSrcweir					;;
161*cdf0e10cSrcweir				--to)
162*cdf0e10cSrcweir					TO="${TO:-}${TO:+,}$2"
163*cdf0e10cSrcweir					shift
164*cdf0e10cSrcweir					;;
165*cdf0e10cSrcweir				--cc)
166*cdf0e10cSrcweir					CC="${CC:-}${CC:+,}$2"
167*cdf0e10cSrcweir					shift
168*cdf0e10cSrcweir					;;
169*cdf0e10cSrcweir				--bcc)
170*cdf0e10cSrcweir					BCC="${BCC:-}${BCC:+,}$2"
171*cdf0e10cSrcweir					shift
172*cdf0e10cSrcweir					;;
173*cdf0e10cSrcweir				--subject)
174*cdf0e10cSrcweir					SUBJECT="$2"
175*cdf0e10cSrcweir					shift
176*cdf0e10cSrcweir					;;
177*cdf0e10cSrcweir				--body)
178*cdf0e10cSrcweir					TEMPLATE="`basename $0`.mutt.XXXXXXXX"
179*cdf0e10cSrcweir					BODY=`mktemp -q -t ${TEMPLATE}`
180*cdf0e10cSrcweir					echo "$2" > $BODY
181*cdf0e10cSrcweir					shift
182*cdf0e10cSrcweir					;;
183*cdf0e10cSrcweir				--attach)
184*cdf0e10cSrcweir					ATTACH="$2"
185*cdf0e10cSrcweir					shift
186*cdf0e10cSrcweir					;;
187*cdf0e10cSrcweir				*)
188*cdf0e10cSrcweir					;;
189*cdf0e10cSrcweir			esac
190*cdf0e10cSrcweir			shift;
191*cdf0e10cSrcweir		done
192*cdf0e10cSrcweir
193*cdf0e10cSrcweir		x-terminal-emulator -e ${MAILER} \
194*cdf0e10cSrcweir			${FROM:+-e} ${FROM:+"set from=\"${FROM}\""} \
195*cdf0e10cSrcweir			${CC:+-c} ${CC:+"${CC}"} \
196*cdf0e10cSrcweir			${BCC:+-b} ${BCC:+"${BCC}"} \
197*cdf0e10cSrcweir			${SUBJECT:+-s} ${SUBJECT:+"${SUBJECT}"} \
198*cdf0e10cSrcweir			${BODY:+-i} ${BODY:+"${BODY}"} \
199*cdf0e10cSrcweir			${ATTACH:+-a} ${ATTACH:+"${ATTACH}"} \
200*cdf0e10cSrcweir			${TO:+"${TO}"} &
201*cdf0e10cSrcweir		rm -f $BODY
202*cdf0e10cSrcweir		;;
203*cdf0e10cSrcweir
204*cdf0e10cSrcweir	evolution)
205*cdf0e10cSrcweir
206*cdf0e10cSrcweir		while [ "$1" != "" ]; do
207*cdf0e10cSrcweir			case $1 in
208*cdf0e10cSrcweir				--to)
209*cdf0e10cSrcweir					if [ "${TO}" != "" ]; then
210*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}to=$2"
211*cdf0e10cSrcweir					else
212*cdf0e10cSrcweir						TO="$2"
213*cdf0e10cSrcweir					fi
214*cdf0e10cSrcweir					shift
215*cdf0e10cSrcweir					;;
216*cdf0e10cSrcweir				--cc)
217*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}cc="`echo "$2" | ${URI_ENCODE}`
218*cdf0e10cSrcweir					shift
219*cdf0e10cSrcweir					;;
220*cdf0e10cSrcweir				--bcc)
221*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}bcc="`echo "$2" | ${URI_ENCODE}`
222*cdf0e10cSrcweir					shift
223*cdf0e10cSrcweir					;;
224*cdf0e10cSrcweir				--subject)
225*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}subject"=`echo "$2" | ${URI_ENCODE}`
226*cdf0e10cSrcweir					shift
227*cdf0e10cSrcweir					;;
228*cdf0e10cSrcweir				--body)
229*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}body="`echo "$2" | ${URI_ENCODE}`
230*cdf0e10cSrcweir					shift
231*cdf0e10cSrcweir					;;
232*cdf0e10cSrcweir				--attach)
233*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}attach="`echo "file://$2" | ${URI_ENCODE}`
234*cdf0e10cSrcweir					shift
235*cdf0e10cSrcweir					;;
236*cdf0e10cSrcweir				*)
237*cdf0e10cSrcweir					;;
238*cdf0e10cSrcweir			esac
239*cdf0e10cSrcweir			shift;
240*cdf0e10cSrcweir		done
241*cdf0e10cSrcweir
242*cdf0e10cSrcweir		MAILTO="mailto:${TO}?${MAILTO}"
243*cdf0e10cSrcweir		${MAILER} "${MAILTO}" &
244*cdf0e10cSrcweir		;;
245*cdf0e10cSrcweir
246*cdf0e10cSrcweir	groupwise)
247*cdf0e10cSrcweir
248*cdf0e10cSrcweir		while [ "$1" != "" ]; do
249*cdf0e10cSrcweir			case $1 in
250*cdf0e10cSrcweir				--to)
251*cdf0e10cSrcweir					if [ "${TO}" != "" ]; then
252*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}to=$2"
253*cdf0e10cSrcweir					else
254*cdf0e10cSrcweir						TO="$2"
255*cdf0e10cSrcweir					fi
256*cdf0e10cSrcweir					shift
257*cdf0e10cSrcweir					;;
258*cdf0e10cSrcweir				--cc)
259*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}cc="`echo "$2" | ${URI_ENCODE}`
260*cdf0e10cSrcweir					shift
261*cdf0e10cSrcweir					;;
262*cdf0e10cSrcweir				--bcc)
263*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}bcc="`echo "$2" | ${URI_ENCODE}`
264*cdf0e10cSrcweir					shift
265*cdf0e10cSrcweir					;;
266*cdf0e10cSrcweir				--subject)
267*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}subject"=`echo "$2" | ${URI_ENCODE}`
268*cdf0e10cSrcweir					shift
269*cdf0e10cSrcweir					;;
270*cdf0e10cSrcweir				--body)
271*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}body="`echo "$2" | ${URI_ENCODE}`
272*cdf0e10cSrcweir					shift
273*cdf0e10cSrcweir					;;
274*cdf0e10cSrcweir				--attach)
275*cdf0e10cSrcweir					MAILTO="${MAILTO:-}${MAILTO:+&}attachment="`echo "file://$2" | ${URI_ENCODE}`
276*cdf0e10cSrcweir					shift
277*cdf0e10cSrcweir					;;
278*cdf0e10cSrcweir				*)
279*cdf0e10cSrcweir					;;
280*cdf0e10cSrcweir			esac
281*cdf0e10cSrcweir			shift;
282*cdf0e10cSrcweir		done
283*cdf0e10cSrcweir
284*cdf0e10cSrcweir		MAILTO="mailto:${TO}?${MAILTO}"
285*cdf0e10cSrcweir		${MAILER} "${MAILTO}" &
286*cdf0e10cSrcweir		;;
287*cdf0e10cSrcweir
288*cdf0e10cSrcweir	dtmail)
289*cdf0e10cSrcweir
290*cdf0e10cSrcweir		while [ "$1" != "" ]; do
291*cdf0e10cSrcweir			case $1 in
292*cdf0e10cSrcweir				--to)
293*cdf0e10cSrcweir					TO=${TO:-}${TO:+,}$2
294*cdf0e10cSrcweir					shift
295*cdf0e10cSrcweir					;;
296*cdf0e10cSrcweir				--attach)
297*cdf0e10cSrcweir					ATTACH="$2"
298*cdf0e10cSrcweir					shift
299*cdf0e10cSrcweir					;;
300*cdf0e10cSrcweir				*)
301*cdf0e10cSrcweir					;;
302*cdf0e10cSrcweir			esac
303*cdf0e10cSrcweir			shift;
304*cdf0e10cSrcweir		done
305*cdf0e10cSrcweir
306*cdf0e10cSrcweir		${MAILER} ${TO:+-T} ${TO:-} ${ATTACH:+-a} ${ATTACH:+"${ATTACH}"}
307*cdf0e10cSrcweir		;;
308*cdf0e10cSrcweir
309*cdf0e10cSrcweir	sylpheed | claws)
310*cdf0e10cSrcweir
311*cdf0e10cSrcweir		while [ "$1" != "" ]; do
312*cdf0e10cSrcweir			case $1 in
313*cdf0e10cSrcweir				--to)
314*cdf0e10cSrcweir					TO=${TO:-}${TO:+,}$2
315*cdf0e10cSrcweir					shift
316*cdf0e10cSrcweir					;;
317*cdf0e10cSrcweir				--attach)
318*cdf0e10cSrcweir					ATTACH="${ATTACH:-}${ATTACH:+ }$2"
319*cdf0e10cSrcweir					shift
320*cdf0e10cSrcweir					;;
321*cdf0e10cSrcweir				*)
322*cdf0e10cSrcweir					;;
323*cdf0e10cSrcweir			esac
324*cdf0e10cSrcweir			shift;
325*cdf0e10cSrcweir		done
326*cdf0e10cSrcweir
327*cdf0e10cSrcweir		 ${MAILER} ${TO:+--compose} "${TO:-}" ${ATTACH:+--attach} "${ATTACH:-}"
328*cdf0e10cSrcweir		;;
329*cdf0e10cSrcweir
330*cdf0e10cSrcweir	Mail | Thunderbird | *.app )
331*cdf0e10cSrcweir
332*cdf0e10cSrcweir		while [ "$1" != "" ]; do
333*cdf0e10cSrcweir			case $1 in
334*cdf0e10cSrcweir				--attach)
335*cdf0e10cSrcweir					#i95688# fix filenames containing accented chars, whatever alien
336*cdf0e10cSrcweir					ATTACH="${ATTACH:-}${ATTACH:+ }"`echo "file://$2" | ${URI_ENCODE}`
337*cdf0e10cSrcweir					shift
338*cdf0e10cSrcweir					;;
339*cdf0e10cSrcweir				*)
340*cdf0e10cSrcweir					;;
341*cdf0e10cSrcweir			esac
342*cdf0e10cSrcweir			shift;
343*cdf0e10cSrcweir		done
344*cdf0e10cSrcweir		/usr/bin/open -a "${MAILER}" ${ATTACH}
345*cdf0e10cSrcweir		;;
346*cdf0e10cSrcweir
347*cdf0e10cSrcweir	"")
348*cdf0e10cSrcweir
349*cdf0e10cSrcweir		# DESKTOP_LAUNCH, see http://freedesktop.org/pipermail/xdg/2004-August/004489.html
350*cdf0e10cSrcweir		if [ -n "$DESKTOP_LAUNCH" ]; then
351*cdf0e10cSrcweir			while [ "$1" != "" ]; do
352*cdf0e10cSrcweir				case $1 in
353*cdf0e10cSrcweir					--to)
354*cdf0e10cSrcweir						if [ "${TO}" != "" ]; then
355*cdf0e10cSrcweir							MAILTO="${MAILTO:-}${MAILTO:+&}to=$2"
356*cdf0e10cSrcweir						else
357*cdf0e10cSrcweir							TO="$2"
358*cdf0e10cSrcweir						fi
359*cdf0e10cSrcweir						shift
360*cdf0e10cSrcweir						;;
361*cdf0e10cSrcweir					--cc)
362*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}cc="`echo "$2" | ${URI_ENCODE}`
363*cdf0e10cSrcweir						shift
364*cdf0e10cSrcweir						;;
365*cdf0e10cSrcweir					--bcc)
366*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}bcc="`echo "$2" | ${URI_ENCODE}`
367*cdf0e10cSrcweir						shift
368*cdf0e10cSrcweir						;;
369*cdf0e10cSrcweir					--subject)
370*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}subject="`echo "$2" | ${URI_ENCODE}`
371*cdf0e10cSrcweir						shift
372*cdf0e10cSrcweir						;;
373*cdf0e10cSrcweir					--body)
374*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}body="`echo "$2" | ${URI_ENCODE}`
375*cdf0e10cSrcweir						shift
376*cdf0e10cSrcweir						;;
377*cdf0e10cSrcweir					--attach)
378*cdf0e10cSrcweir						MAILTO="${MAILTO:-}${MAILTO:+&}attachment="`echo "$2" | ${URI_ENCODE}`
379*cdf0e10cSrcweir						shift
380*cdf0e10cSrcweir						;;
381*cdf0e10cSrcweir					*)
382*cdf0e10cSrcweir						;;
383*cdf0e10cSrcweir				esac
384*cdf0e10cSrcweir				shift;
385*cdf0e10cSrcweir			done
386*cdf0e10cSrcweir
387*cdf0e10cSrcweir			MAILTO="mailto:${TO}?${MAILTO}"
388*cdf0e10cSrcweir			${DESKTOP_LAUNCH} "${MAILTO}" &
389*cdf0e10cSrcweir		else
390*cdf0e10cSrcweir			echo "Could not determine a mail client to use."
391*cdf0e10cSrcweir			exit 2
392*cdf0e10cSrcweir		fi
393*cdf0e10cSrcweir		;;
394*cdf0e10cSrcweir
395*cdf0e10cSrcweir	*)
396*cdf0e10cSrcweir		echo "Unsupported mail client: `basename $MAILER | sed 's/-.*^//'`"
397*cdf0e10cSrcweir		exit 2
398*cdf0e10cSrcweir		;;
399*cdf0e10cSrcweiresac
400*cdf0e10cSrcweir
401*cdf0e10cSrcweirexit 0
402