#!/bin/bash # CUPS filter to process ODT files using abiword # $6 happens to be the path to file passed as argument fn="$6" #for our subshell convenience sandbox1="${TMPDIR1:-/tmp}/tempcups.$$" (umask 077 && mkdir "$sandbox1") || exit 1 # we are creating a dummy folder, which can take different file types. sandbox="${TMPDIR:-/tmp}/cups-odftops.$$" (umask 077 && mkdir "$sandbox") || exit 1 #The condition which checks whether our abiword is 2.6.6+ or 2.6.6- $(abiword --to="$sandbox1/temp123.doc" "$fn") if [ "$?" -ne 0 ]; then #our dummy file fn1="$sandbox/temp123.odt" cp "$fn" "$fn1" # Call abiword quietly, securely abiword --to="ps" "$fn1" fn2="`echo "$fn1" | sed -e 's/odt$/ps/' `" else #check if our version doesn't require an intermediate conversion, #if it does, do it $(abiword --to="$sandbox1/temp123.ps" "$fn") if [ "$?" -ne 0 ]; then abiword --to="$sandbox/temp123.ps" "$sandbox1/temp123.doc" else fn2="$sandbox1/temp123.ps" fi fi cat "$fn2" #remove the sandbox folder, for debugging purposes check by commenting the following line and see what is in the /tmp/ folder rm -rf $sandbox rm -rf $sandbox1