#!/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 # we are creating a dummy folder, which can take different file types. sandbox1="${TMPDIR1:-/tmp}/cups-temp.$$" (umask 077 && mkdir "$sandbox1") || exit 1 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"` > "$sandbox/errorinfo.txt" if [ "$?" -ne 0 ]; then #our dummy file fn1="$sandbox/temp123.odt" cp "$fn" "$fn1" # Call abiword quietly, securely abiword --to="ps" "$fn1" fn2="$sandbox/temp123.ps" else #check if our version doesn't require an intermediate conversion, #if it does, do it `abiword --to="$sandbox1/temp123.ps" "$fn"` > "$sandbox/errorinfo.txt" if [ "$?" -ne 0 ]; then abiword --to="$sandbox/temp123.ps" "$sandbox1/temp123.doc" fn2="$sandbox/temp123.ps" 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