#!/bin/bash cleaner() { for key in ${!failedtasks[@]} do taskid=${failedtasks[key]} gettaskinfos $taskid faildepends=$( Select tasks 'COUNT(*)' <<-EOWhere requires = $taskid EOWhere ) (( failed+=faildepends )) (( ran+=faildepends )) Update tasks status 2 <<<"id = $taskid" Update tasks status 2 <<<"requires = $taskid" echo "SELECT COUNT(*) FROM tasks WHERE ( status = 0 OR status = 1 ) AND required = $taskid;">&3 read -u4 count if (( count == 0 )) then rm -f "$cleanup" fi unset failedtasks[key] done for key in ${!finishedtasks[@]} do taskid=${finishedtasks[key]} gettaskinfos $taskid if [ -n "$destfilename" ] then echo \ "UPDATE destination_files" \ "SET filename=\"${destfilename//\"/\"\"}\"," \ " last_change=(" \ " SELECT last_change" \ " FROM source_files" \ " WHERE id=$sourcefileid" \ " )," \ " old_filename=(" \ " SELECT filename" \ " FROM destination_files" \ " WHERE id=$destfileid" \ " )," \ " rename_pattern=(" \ " SELECT rename_pattern" \ " FROM tasks" \ " WHERE id=$taskid" \ " )," \ " fat32compat=(" \ " SELECT fat32compat" \ " FROM tasks" \ " WHERE id=$taskid" \ " )," \ " ascii=(" \ " SELECT ascii" \ " FROM tasks" \ " WHERE id=$taskid" \ " )" \ "WHERE id=$destfileid;" \ >&3 fi echo "SELECT COUNT(*) FROM tasks WHERE ( status = 0 OR status = 1 ) AND required = $taskid;">&3 read -u4 count if (( count == 0 )) then rm -f "$cleanup" fi Delete tasks <<<"id = $taskid" unset finishedtasks[key] done }