summaryrefslogtreecommitdiff
path: root/Master/bin/i386-freebsd/xdvizilla
diff options
context:
space:
mode:
Diffstat (limited to 'Master/bin/i386-freebsd/xdvizilla')
-rwxr-xr-xMaster/bin/i386-freebsd/xdvizilla134
1 files changed, 134 insertions, 0 deletions
diff --git a/Master/bin/i386-freebsd/xdvizilla b/Master/bin/i386-freebsd/xdvizilla
new file mode 100755
index 00000000000..54f4b03ddfe
--- /dev/null
+++ b/Master/bin/i386-freebsd/xdvizilla
@@ -0,0 +1,134 @@
+#! /bin/sh
+#
+# This is a kludge to fix helper apps in mozilla. See mozilla bugs #57420
+# and also #78919.
+#
+# It's also useful for tar files with Netscape 4.x
+#
+# Copyright (c) 2002-2004 Paul Vojta
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL PAUL VOJTA OR ANY OTHER AUTHOR OF OR CONTRIBUTOR TO
+# THIS SOFTWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+# Some changes suggested by Thomas Esser included by
+# <stefanulrich@users.sourceforge.net>.
+
+IN_FILE=
+NO_RM=
+TMP_DIR=
+progname=xdvizilla
+
+do_cleanup()
+{
+ exitval=$?
+ if [ -z "$NO_RM" -a -n "$IN_FILE" ] ; then
+ rm -f "$IN_FILE"
+ fi
+ test -n "$TMP_DIR" && rm -rf "$TMP_DIR"
+ exit $exitval
+}
+
+do_abort()
+{
+ xmessage -nearmouse "$progname: $1"
+ do_cleanup
+ exit 1
+}
+
+usage()
+{
+ xmessage -nearmouse "Usage: $progname [-no-rm] <file>"
+ do_cleanup
+ exit 1
+}
+
+trap 'do_cleanup' 1 2 3 7 13 15
+
+### create a temporary directory only read/writable by user
+TMP_DIR=${TMPDIR-${TEMP-${TMP-/tmp}}}/$progname.$$
+(umask 077; mkdir "$TMP_DIR") || do_abort "Could not create directory \`$TMP_DIR'"
+
+if [ $# -gt 1 -a "x$1" = "x-no-rm" ]; then
+ NO_RM=y
+ shift
+fi
+
+if [ $# -ne 1 ]; then
+ usage
+fi
+
+DIR=`dirname "$0"`
+
+if [ "$DIR" = . ]; then
+ DIR=
+elif [ -f "$DIR"/xdvi -a -x "$DIR"/xdvi ]; then
+ DIR="$DIR"/
+else
+ DIR=
+fi
+
+# need to preserve IN_FILE for eventual deletion
+IN_FILE="$1"
+TMP_FILE="$IN_FILE"
+
+while [ 1 ]; do
+ [ -f "$TMP_FILE" ] || do_abort "$TMP_FILE: File not found."
+ FILETYPE=`file "$TMP_FILE"`
+ case "$FILETYPE" in
+ *"gzip compressed data"*)
+ out="$TMP_DIR"/tmp-gz
+ gunzip -c "$TMP_FILE" > "$out"
+ TMP_FILE="$out"
+ ;;
+ *"compressed data"* | *"compress'd data"*)
+ out="$TMP_DIR"/tmp-compress
+ uncompress -c "$TMP_FILE" > "$out"
+ TMP_FILE="$out"
+ ;;
+ "$TMP_FILE: empty")
+ do_abort "$TMP_FILE is an empty file
+(probably a bug in Mozilla?)"
+ ;;
+ *" tar archive")
+ ### do sanity checks on the tar archive, to avoid overwriting user files:
+ dangerous=`tar tf "$TMP_FILE" | egrep '^(/|.*\.\./)'`
+ [ -z "$dangerous" ] || do_abort "Tar file contains files with absolute paths or \`../' components,
+which may overwrite user files. Not unpacking it."
+ ### also check for gzipped DVI files inside the archive ...
+ out="$TMP_DIR"/`tar tf "$TMP_FILE" | egrep '\.(dvi|dvi.gz|dvi.Z)$' | head -1`
+ if [ -z "$out" ]; then
+ do_abort "Tar file does not contain a dvi file."
+ else
+ cat "$TMP_FILE" | (cd "$TMP_DIR"; tar xf -)
+ TMP_FILE="$out"
+ fi
+ ;;
+ *"DVI file"*)
+ "$DIR"xdvi -safer "$TMP_FILE"
+ break
+ ;;
+ *)
+ do_abort "$TMP_FILE: Unrecognized file format!"
+ ;;
+ esac
+done
+
+do_cleanup
+
+exit 0